VS 2012 kann kein Projekt laden, das IIS mit einem benutzerdefinierten Bindungshost verwendet. Es wird davon ausgegangen, dass IIS Express verwendet wird

85

Ich habe ein ASP.NET-Projekt, das IIS verwendet. Die IIS-Site ist für die Verwendung des benutzerdefinierten Bindungshostnamens konfiguriert. Die Projektdatei enthält folgende Einstellungen:

...
<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>
...

Wenn das Projekt so konfiguriert ist, kann ich von auf die Site zugreifen http://custom.host.name/und VS stellt beim Debuggen automatisch eine Verbindung zum IIS-Worker-Prozess her.

Wenn ich ein Projekt neu lade (entweder durch Schließen / erneutes Öffnen der Lösung oder durch Entladen / erneutes Laden im Projektkontextmenü), passiert etwas Unerwartetes. Das Projekt kann nicht geladen werden, (load failed)wird rechts vom Projektnamen im Lösungs-Explorer angezeigt und das Meldungsfeld wird mit der folgenden Meldung angezeigt (es wird auch im Ausgabefenster angezeigt):

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.

Ich habe versucht, die Projektstandortkonfiguration aus der IIS Express- applicationhost.configDatei zu entfernen , aber es hat nicht geholfen.

Dieses Problem tritt beim Zuordnen des Projekts zur IIS-Anwendung unter der Standardwebsite nicht auf.

Die VS-Version ist Ultimate 2012 Update 3.

Igor Antonov
quelle
3
Ja, ich habe das gleiche Problem mit VS2013, da ich IIS Express einmal für dieses Projekt verwendet habe ... Wirklich ärgerlich!
Kipusoep
3
Versuchen Sie, die Dateien csproj oder csproj.user zu bearbeiten und UseIISExpressauf false zu setzen. stackoverflow.com/a/19103452/138938
Jon Crowell
2
@HeadofCatering, ich hatte gerade dieses Problem, aber UseIISExpress wurde in der .csproj-Datei des Projekts bereits auf false gesetzt. Wenn ich jedoch nur nach IIS suche, finde ich das XML-Tag "<UseIIS> True </ UsIIS>" in der csproj-Datei (in <ProjectExtensions> <VisualStudio> <FlavorProperties> <WebProjectProperties>) und setze es einfach auf "<" UseIIS> True </ UsIIS> "hat es so gemacht, dass Visual Studio das Projekt erneut laden kann. Hoffentlich hatte dies keine anderen unbeabsichtigten Auswirkungen!
Mgrandi
2
@mgrandi Beachten Sie den Tippfehler; Einstellung, <UseIIS>True</UseIIS>um <UseIIS>False</UseIIS>den Trick auch für mich zu tun. Danke für den Vorschlag!
Dion V.

Antworten:

205

Das Öffnen als Administrator hat das Problem für mich nicht behoben. Was es für mich behoben hat, war, sowohl die .csprojals auch die .csproj.userDateien zu öffnen und sicherzustellen, dass beide UseIISExpresseingestellt waren false.

In meinem Fall hat die .csproj.userDatei die Datei überschrieben .csproj, obwohl sie SaveServerSettingsInUserFilemarkiert war false.

<Project ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    <UseIISExpress>false</UseIISExpress> 
    <!-- ... -->
</Project>
Jona
quelle
48
Das Löschen von csproj.user hat mein Problem endlich gelöst. Danke dir!
Bryan Sumter
Vielen Dank, ich habe mir den Kopf gebrochen und die csproj-Einstellungen durchgesehen. Alles sah gut aus. Nachdem ich die Datei csproj.user gelöscht hatte, wurde das Projekt ohne Beanstandung geladen ++ 1
Esen
47

Die Lösung lautet: *.csproj.userDatei löschen !

Cyrus
quelle
ABER nach dem Löschen *.csproj.userkönnen Sie nicht bearbeiten*.csproj
Shuhratjan Nizamov
21

Ich habe " SaveServerSettingsInUserFile " auf True gesetzt und es hat bei mir funktioniert.

<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>

Quelle: hier klicken

Liakat
quelle
4

Wenn Sie die Verwendung für IISexpress aktivieren, die applicationHost.Config (in% userprofile% \ iisexpress \ config), müssen Sie die Option "Servereinstellungen auf alle Benutzer anwenden (in Projektdatei speichern)" aktivieren, um zu vermeiden, dass Ihre Einstellungen geschrieben werden in yourProject.csproj.user Projekt Einstellungen

Dies entspricht dem Bearbeiten Ihrer Datei project.csproj und dem Schreiben. <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> Wenn Sie IISExpress aktivieren und Ihre Datei applicationHost.config keinen Eintrag zu Ihren Projekteinstellungen enthält, müssen Sie nur die Schaltfläche "Virtuelles Verzeichnis erstellen" drücken und fertig !

hoffe das hilft

zobidafly
quelle
Welche Version von Visual Studio ist das? Ich habe diese Option nicht in VS Pro 2013
Matt R
@ Matt R: Ich habe VS2012 Pro, also gehe ich davon aus, dass es für Ihre Version dasselbe ist. Wählen Sie im Solution Explorer Ihr web.application-Projekt aus, klicken Sie mit der rechten Maustaste und wählen Sie "Eigenschaften". Wenn ein Fenster mit Registerkarten angezeigt wird, wählen Sie die Registerkarte "Web", und Sie sollten den Screenshot sehen, den ich in der Antwort beigefügt habe ... und entschuldigen Sie die Verspätung Antworten!
Zobidafly
3

In meinem Fall hat das Löschen der Datei * .csproj.user einwandfrei funktioniert

Haddis
quelle
2

Ich hatte das gleiche Problem, für mich war alles, was ich tun musste, Open Visual Studio als Administrator und dies löste das Problem für mich.

Klicken Sie einfach mit der rechten Maustaste auf Visual Studio 2012 und klicken Sie auf "Als Administrator ausführen". hoffe das hilft

Gautam Beri
quelle
2

Für mich funktionierte eine Kombination aus beiden für Visual Studio 2015 Preview mit Windows 7 64-Bit:
1. Löschen Sie die Datei * .csproj.user und
2. <UseIISExpress>false</UseIISExpress>in der Lösungsdatei.
Schritte für Schritt 2: Klicken Sie in Visual Studio mit der rechten Maustaste auf Projekt ==> Entladen ===> Bearbeiten Sie die Lösung

Sunil Yadav
quelle
1

Das ist genug

Kommentieren Sie diese Zeile in der Projektdatei x.csproj

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

x.csproj: Fehler: Die URL ' http: // localhost / x ' für das Webprojekt 'x' ist für die Verwendung von IIS Express als Webserver konfiguriert, die URL ist jedoch derzeit auf dem lokalen IIS-Webserver konfiguriert. Um dieses Projekt zu öffnen, müssen Sie den IIS-Manager verwenden, um die Bindungen unter Verwendung dieser URL vom lokalen IIS-Webserver zu entfernen.

Samar Samar
quelle
1

Ich bin hier gelandet, als ein Projekt, das für die Verwendung von IIS konfiguriert ist, nicht geladen werden konnte, weil es die Website (myproject.mycompany.local) nicht finden konnte - obwohl die Website in meinem Webbrowser einwandfrei geladen wurde.

Die Lösung bestand darin, sicherzustellen, dass für die Bindung der Site in IIS 7 der Hostname auf "myproject.mycompany.local" festgelegt war. So gelangen Sie zu den Bindungen Ihrer Site:

  1. Wählen Sie in IIS 7 die Site im linken Navigationsbereich aus.
  2. Klicken Sie im Bedienfeld Aktionen rechts auf Bindungen ...

Wenn Ihre Website auch nicht in den Webbrowser geladen wird, liegt dies wahrscheinlich daran, dass Sie in Ihrer Hosts-Datei keinen Eintrag dafür haben:

127.0.0.1    myproject.mycompany.local
Seth
quelle
1

Wenn Ihr Projekt Teil einer Lösung ist, öffnen Sie die Lösungsdatei (.sln) und bearbeiten Sie den Projektabschnitt.

ProjectSection(WebsiteProperties) = preProject
    UseIISExpress = "false"

Es hat bei mir funktioniert.

Herr Nsubuga
quelle
0

Dieses Problem hat meinen heutigen Tag in VS 2013 ruiniert. Ich habe alle oben genannten Versuche unternommen, das Projekt jedoch erst geladen, als ich eine Website in IIS erstellt und diesen Abschnitt in der .csproj-Datei (insbesondere im IISUrl-Element) ausgefüllt habe:

<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
quelle
Das macht eine Menge Sinn. Ich konnte das aber nicht zum Laufen bringen.
Winnemucca
0

Ich hatte das gleiche Problem, da das Ausführen als Administrator bei mir nicht funktioniert hat.

Wenn Sie <UseIIS>True</UseIIS>in der ".csproj" -Datei des Projekts vorübergehend auf "false" setzen, wird das Projekt möglicherweise geladen, aber nach dem Neustart oder Schließen der Lösung wurde der Wert wieder auf "True" gesetzt.

Nachdem ich die Antwort von @Cyrus (die für mich funktioniert hat) für eine übersichtlichere Antwort vervollständigt hatte, konzentrierte ich mich mehr auf die Datei csproj.user des Projekts und fand die genaue Ursache des Problems: Auf <UseIISExpress>true</UseIISExpress>false setzen und dann das Projekt neu laden . funktioniert gut, ohne die Datei csproj.user zu löschen. Ergebnis ist wie folgt:

<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
quelle
Sollte erwähnen, dass in meinem Fall jedes Mal, wenn ich Visual Studio normal öffne (nicht als Administrator), die IIS-Einstellungen zurückkehren und ich die Aufgaben erneut ausführen muss.
Homa Pourmohammadi