VS 2012 nie może załadować projektu, który używa usług IIS z niestandardowym hostem powiązań - uważa, że ​​używa IIS Express

85

Mam projekt ASP.NET, który korzysta z usług IIS. Witryna usług IIS jest skonfigurowana do używania niestandardowej nazwy hosta powiązania. Plik projektu zawiera następujące ustawienia:

...
<UseIISExpress>false</UseIISExpress>
...
<ProjectExtensions>
  <VisualStudio>
    <FlavorProperties GUID="{349c5851-65df-11da-9384-00065b846f21}">
      <WebProjectProperties>
        <UseIIS>True</UseIIS>
        <AutoAssignPort>False</AutoAssignPort>
        <DevelopmentServerPort>8662</DevelopmentServerPort>
        <DevelopmentServerVPath>/</DevelopmentServerVPath>
        <IISUrl>http://custom.host.name/</IISUrl>
        <NTLMAuthentication>False</NTLMAuthentication>
        <UseCustomServer>False</UseCustomServer>
        <CustomServerUrl></CustomServerUrl>
        <SaveServerSettingsInUserFile>False</SaveServerSettingsInUserFile>
      </WebProjectProperties>
    </FlavorProperties>
  </VisualStudio>
</ProjectExtensions>
...

Gdy projekt jest skonfigurowany w taki sposób, mogę uzyskać dostęp do witryny z, http://custom.host.name/a VS automatycznie dołącza się do procesu roboczego usług IIS podczas debugowania.

Kiedy przeładowuję projekt (przez zamknięcie / ponowne otwarcie rozwiązania lub wyładowanie / przeładowanie w menu kontekstowym projektu), dzieje się coś nieoczekiwanego. Projekt nie ładuje się, (load failed)jest wyświetlany po prawej stronie nazwy projektu w eksploratorze rozwiązań, a okno komunikatu jest wyświetlane z następującym komunikatem (jest również wyświetlany w oknie Dane wyjściowe):

The URL 'http://custom.host.name/' for Web project 'Some.Asp.Net.Project' 
is configured to use IIS Express as the web server but the URL is currently
configured on the local IIS web server. To open this project, you must use
IIS Manager to remove the bindings using this URL from the local IIS web server.

Próbowałem usunąć konfigurację witryny projektu z applicationhost.configpliku IIS Express , ale to nie pomogło.

Nie napotykam tego problemu podczas mapowania projektu do aplikacji IIS w domyślnej witrynie.

Wersja VS to Ultimate 2012 Update 3.

Igor Antonov
źródło
3
Tak, mam ten sam problem z VS2013, odkąd raz użyłem IIS Express w tym projekcie ... Naprawdę irytujące!
kipusoep
3
Spróbuj edytować pliki csproj lub csproj.user i ustaw UseIISExpressna false. stackoverflow.com/a/19103452/138938
Jon Crowell
2
@HeadofCatering, właśnie miałem ten problem, ale UseIISExpress był już ustawiony na false w pliku .csproj projektów. Jednak samo wyszukanie IIS doprowadziło mnie do znalezienia znacznika XML „<UseIIS> True </UseIIS>” w pliku csproj (w <ProjectExtensions><VisualStudio><FlavorProperties> <WebProjectProperties>) i po prostu ustawiania go na „< UseIIS> True </UseIIS> ”umożliwiło programowi Visual Studio ponowne załadowanie projektu. Miejmy nadzieję, że nie miało to żadnych innych niezamierzonych efektów!
mgrandi
2
@mgrandi Uważaj na literówkę; Ustawienie <UseIIS>True</UseIIS>do <UseIIS>False</UseIIS>wystarczyły dla mnie też. Dzieki za sugestie!
Dion V.

Odpowiedzi:

205

Otwarcie jako administrator nie rozwiązało problemu. Co ustalone to dla mnie było otwarcie zarówno.csproj i .csproj.userplików oraz zapewnienie, że obaj UseIISExpressustawiony false.

W moim przypadku .csproj.userplik przesłaniał .csprojplik, mimo że SaveServerSettingsInUserFilebył oznaczony false.

<Project ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    <UseIISExpress>false</UseIISExpress> 
    <!-- ... -->
</Project>
Jonasza
źródło
48
Usunięcie csproj.user ostatecznie rozwiązało mój problem. Dziękuję Ci!
Bryan Sumter
Dziękuję bardzo, łamałem sobie głowę przeglądając ustawienia csproj. Wszystko wyglądało dobrze. Po usunięciu pliku csproj.user rozpoczęło się ładowanie projektu bez żadnych reklamacji ++ 1
Esen
47

Rozwiązanie: usuń *.csproj.userplik!

Cyrus
źródło
ALE po usunięciu *.csproj.usernie można edytować*.csproj
Shuhratjan Nizamov
21

UstawiłemSaveServerSettingsInUserFile ” na True i to zadziałało.

<ProjectExtensions>
<VisualStudio>
  <FlavorProperties GUID="{349c5851-65df-11da-9384-00065b846f21}">
    <WebProjectProperties>
      <UseIIS>True</UseIIS>
      <AutoAssignPort>True</AutoAssignPort>
      <DevelopmentServerPort>50584</DevelopmentServerPort>
      <DevelopmentServerVPath>/</DevelopmentServerVPath>
      <IISUrl>http://localhost:50584/</IISUrl>
      <NTLMAuthentication>False</NTLMAuthentication>
      <UseCustomServer>False</UseCustomServer>
      <CustomServerUrl>
      </CustomServerUrl>
      <SaveServerSettingsInUserFile>True</SaveServerSettingsInUserFile>
    </WebProjectProperties>
  </FlavorProperties>
</VisualStudio>

Źródło: kliknij tutaj

Liakat Ali Mondol
źródło
4

podczas korzystania z włączania korzystania z IISexpress, applicationHost.Config (znajdującego się w% userprofile% \ iisexpress \ config), należy zaznaczyć opcję „Zastosuj ustawienia serwera do wszystkich użytkowników (zapisz w pliku projektu)”, aby uniknąć zapisywania ustawień w yourProject.csproj.user ustawienia projektu

robienie tego jest takie samo jak edycja pliku <WebProjectProperties> <UseIIS>True</UseIIS> <AutoAssignPort>True</AutoAssignPort> <DevelopmentServerPort>62242</DevelopmentServerPort> <DevelopmentServerVPath>/</DevelopmentServerVPath> <IISUrl>http://localhost:8100/Claims/</IISUrl> <OverrideIISAppRootUrl>True</OverrideIISAppRootUrl> <IISAppRootUrl>http://localhost:8100/Claims/</IISAppRootUrl> <NTLMAuthentication>False</NTLMAuthentication> <UseCustomServer>False</UseCustomServer> <CustomServerUrl></CustomServerUrl> <SaveServerSettingsInUserFile>False</SaveServerSettingsInUserFile> </WebProjectProperties> project.csproj i pisanie Jeśli włączysz IISExpress i plik applicationHost.config nie zawiera wpisu związanego z ustawieniami twojego projektu, wystarczy nacisnąć przycisk "Utwórz katalog wirtualny" i gotowe !

mam nadzieję że to pomoże

zobidafly
źródło
Jaka to wersja programu Visual Studio? Nie mam tej opcji w VS Pro 2013
Matt R
@Matt R: Mam VS2012 pro, więc zakładam, że będzie tak samo dla twojej wersji. w eksploratorze rozwiązań wybierz projekt aplikacji web.application, kliknij prawym przyciskiem myszy i wybierz "właściwości" - następnie pojawi się okno z zakładkami wybierz zakładkę "Sieć" i powinieneś zobaczyć zrzut ekranu, który dołączyłem do odpowiedzi ... i przepraszam za późno odpowiedź!
zobidafly
3

W moim przypadku usunięcie pliku * .csproj.user działało dobrze

Haddis
źródło
2

Miałem ten sam problem, dla mnie jedyne, co musiałem zrobić, to otworzyć studio wizualne jako administrator i to rozwiązało problem.

więc po prostu kliknij prawym przyciskiem myszy Visual Studio 2012 i kliknij „Uruchom jako administrator”. mam nadzieję że to pomoże

Gautam Beri
źródło
2

U mnie kombinacja obu działała dla Visual Studio 2015 Preview z Windows 7 64 bit:
1. usuń plik * .csproj.user i
2. <UseIISExpress>false</UseIISExpress>w Solution File.
Kroki do kroku 2: W programie Visual Studio kliknij prawym przyciskiem myszy projekt ==> Zwolnij ===> Edytuj rozwiązanie

Sunil Yadav
źródło
1

Wystarczy

Skomentuj tę linię w pliku projektu x.csproj

<!--<UseIIS>True</UseIIS>-->

x.csproj: błąd: adres URL „ http: // localhost / x ” dla projektu sieci Web „x” jest skonfigurowany do używania IIS Express jako serwera sieci Web, ale adres URL jest obecnie skonfigurowany na lokalnym serwerze sieci Web usług IIS. Aby otworzyć ten projekt, należy użyć Menedżera usług IIS do usunięcia powiązań używających tego adresu URL z lokalnego serwera sieci Web usług IIS.

samar samar
źródło
1

Wylądowałem tutaj, gdy projekt skonfigurowany do korzystania z usług IIS nie ładował się, ponieważ nie mógł znaleźć witryny internetowej (mójprojekt.mojafirma.lokalna) - mimo że witryna wczytuje się poprawnie w mojej przeglądarce.

Rozwiązaniem było upewnienie się, że powiązanie witryny w usługach IIS 7 miało nazwę hosta ustawioną na „mójproject.mycompany.local”. Aby dostać się do powiązań witryny:

  1. W usługach IIS 7 wybierz witrynę w lewym panelu nawigacyjnym.
  2. W panelu Operacje po prawej stronie kliknij Wiązania ...

Jeśli Twoja witryna również nie ładuje się w przeglądarce internetowej, prawdopodobnie jest tak dlatego, że nie masz odpowiedniego wpisu w pliku hosts:

127.0.0.1    myproject.mycompany.local
Seth
źródło
1

Jeśli projekt jest częścią rozwiązania, otwórz plik rozwiązania (.sln) i edytuj sekcję projektu.

ProjectSection(WebsiteProperties) = preProject
    UseIISExpress = "false"

U mnie zadziałało.

Panie Nsubuga
źródło
0

Ten problem zrujnował mi dzisiaj dzień w VS 2013. Wypróbowałem wszystkie powyższe, ale nie udało mi się załadować projektu, dopóki nie utworzyłem witryny sieci Web w IIS i nie wypełniłem tej sekcji w pliku .csproj (zwłaszcza w elemencie IISUrl):

<ProjectExtensions>
    <VisualStudio>
      <FlavorProperties GUID="{349c5851-65df-11da-9384-00065b846f21}">
        <WebProjectProperties>
          <UseIIS>True</UseIIS>
          <AutoAssignPort>True</AutoAssignPort>
          <DevelopmentServerPort>81</DevelopmentServerPort>
          <DevelopmentServerVPath>/</DevelopmentServerVPath>
          <IISUrl>http://localhost/SomeProject</IISUrl>
          <NTLMAuthentication>False</NTLMAuthentication>
          <UseCustomServer>False</UseCustomServer>
          <CustomServerUrl>
          </CustomServerUrl>
          <SaveServerSettingsInUserFile>False</SaveServerSettingsInUserFile>
        </WebProjectProperties>
      </FlavorProperties>
    </VisualStudio>

Eric Farr
źródło
to ma sens. Nie mogłem jednak sprawić, żeby to działało.
Winnemucca,
0

Miałem ten sam problem, bieganie jako administrator nie działało dla mnie.

Ustawienie wartości <UseIIS>True</UseIIS>false w pliku „.csproj” projektu mogło tymczasowo załadować projekt, ale wartość powracała do True po ponownym uruchomieniu lub zamknięciu rozwiązania.

Uzupełniając odpowiedź @Cyrus (która zadziałała dla mnie), aby uzyskać bardziej zgrabną odpowiedź, skupiłem się bardziej na pliku csproj.user projektu i znalazłem dokładne źródło problemu: ustawienie <UseIISExpress>true</UseIISExpress>na fałsz, a następnie ponowne załadowanie projektu. działa dobrze, bez usuwania pliku csproj.user. wynik jest taki:

<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    <ProjectView>ProjectFiles</ProjectView>
    <UseIISExpress>false</UseIISExpress>
    <IISExpressSSLPort />
    <IISExpressAnonymousAuthentication />
    <IISExpressWindowsAuthentication />
    <IISExpressUseClassicPipelineMode />
    <NameOfLastUsedPublishProfile>My Project's Name</NameOfLastUsedPublishProfile>
  </PropertyGroup>
Homa Pourmohammadi
źródło
Powinienem wspomnieć, że w moim przypadku za każdym razem, gdy otwieram Visual Studio normalnie (nie jako administrator), ustawienia IIS wracają i muszę ponownie wykonywać zadania.
Homa Pourmohammadi