VS 2012 non è in grado di caricare un progetto che utilizza IIS con l'host di associazione personalizzato: pensa che utilizzi IIS Express


85

Ho un progetto ASP.NET che utilizza IIS. Il sito IIS è configurato per utilizzare il nome host dell'associazione personalizzata. Il file di progetto contiene le seguenti impostazioni:

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

Quando il progetto è configurato in questo modo, posso accedere al sito da http://custom.host.name/e VS si collega automaticamente al processo di lavoro IIS durante il debug.

Quando ricarico il progetto (chiudendo / riaprendo la soluzione o scaricando / ricaricando nel menu contestuale del progetto), accade qualcosa di inaspettato. Il progetto non viene caricato, (load failed)viene visualizzato a destra del nome del progetto in Esplora soluzioni e viene visualizzata la finestra di messaggio con il seguente messaggio (viene visualizzato anche nella finestra di output):

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.

Ho provato a rimuovere la configurazione del sito del progetto dal applicationhost.configfile IIS Express , ma non è stato d'aiuto.

Non riscontro questo problema durante il mapping del progetto all'applicazione IIS nel sito predefinito.

La versione VS è Ultimate 2012 Update 3.


3
Sì, ho lo stesso problema con VS2013 da quando ho usato IIS Express una volta con questo progetto ... Davvero fastidioso!
kipusoep

3
Prova a modificare i file csproj o csproj.user e impostalo UseIISExpresssu false. stackoverflow.com/a/19103452/138938
Jon Crowell

2
@ HeadofCatering, ho appena avuto questo problema, ma UseIISExpress era già impostato su false nel file .csproj del progetto. Tuttavia, la semplice ricerca di IIS mi ha portato a trovare il tag XML "<UseIIS> True </UseIIS>" all'interno del file csproj (in <ProjectExtensions><VisualStudio><FlavorProperties> <WebProjectProperties>) e impostarlo semplicemente su "< UseIIS> True </UseIIS> "ha consentito a Visual Studio di caricare di nuovo il progetto. Si spera che questo non abbia avuto altri effetti indesiderati!
mgrandi

2
@mgrandi Mind the typo; l'impostazione <UseIIS>True</UseIIS>di <UseIIS>False</UseIIS>fatto il trucco anche per me. Grazie per il suggerimento!
Dion V.

Risposte:


205

L'apertura come amministratore non ha risolto il problema per me. Che fissa che per me è stato l'apertura sia la .csproje .csproj.userfile e la garanzia che entrambi avevano UseIISExpressimpostato false.

Nel mio caso, il .csproj.userfile sovrascriveva il .csprojfile anche se SaveServerSettingsInUserFileera contrassegnato false.

<Project ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    <UseIISExpress>false</UseIISExpress> 
    <!-- ... -->
</Project>

48
L'eliminazione di csproj.user ha finalmente risolto il mio problema. Grazie!
Bryan Sumter

Grazie mille, mi stavo rompendo la testa guardando attraverso le impostazioni di csproj. Sembrava tutto a posto. Dopo aver eliminato il file csproj.user, ha iniziato a caricare il progetto senza alcun reclamo ++ 1
Esen

47

La soluzione è: elimina il *.csproj.userfile!


MA dopo l'eliminazione *.csproj.user, non è possibile modificare*.csproj
Shuhratjan Nizamov

21

Ho impostato " SaveServerSettingsInUserFile " come True e ha funzionato per me.

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

Fonte: clicca qui


4

quando usi abilita l'uso per IISexpress, applicationHost.Config (che si trova in% userprofile% \ iisexpress \ config), devi selezionare l'opzione "Applica le impostazioni del server a tutti gli utenti (memorizza nel file di progetto)" per evitare che le tue impostazioni vengano scritte in yourProject.csproj.user impostazioni del progetto

fare questo è come modificare il tuo file project.csproj e scrivere <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> Se abiliti IISExpress e il tuo file applicationHost.config non contiene la voce relativa alle impostazioni del tuo progetto, devi solo premere il pulsante "Crea directory virtuale" e fatto !

spero che sia di aiuto


Che versione di Visual Studio è questa? Non ho questa opzione in VS Pro 2013
Matt R

@ Matt R: ho VS2012 pro, quindi presumo che sarebbe lo stesso per la tua versione. in Esplora soluzioni, seleziona il tuo progetto web.application, fai clic con il pulsante destro del mouse e seleziona "proprietà" -quindi appare una finestra a schede seleziona la scheda "Web" e dovresti vedere lo screenshot che ho allegato nella risposta ... e scusa per il ritardo risposta!
zobidafly

3

Nel mio caso, l'eliminazione del file * .csproj.user ha funzionato bene


2

Ho avuto lo stesso problema, per me tutto quello che dovevo fare era aprire Visual Studio come amministratore e questo ha risolto il problema per me.

quindi semplice clic destro su Visual Studio 2012 e fare clic su "Esegui come amministratore". spero che sia di aiuto


2

Per me la combinazione di entrambi ha funzionato per Visual Studio 2015 Preview con Windows 7 64 bit:
1. eliminare il file * .csproj.user e
2. <UseIISExpress>false</UseIISExpress>nel file della soluzione.
Passaggi per il passaggio 2: in Visual Studio fare clic con il pulsante destro del mouse su Progetto ==> Scarica ===> Modifica la soluzione


1

È abbastanza

Commenta questa riga nel file di progetto x.csproj

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

x.csproj: errore: l'URL " http: // localhost / x " per il progetto Web "x" è configurato per utilizzare IIS Express come server Web, ma l'URL è attualmente configurato sul server Web IIS locale. Per aprire questo progetto, è necessario utilizzare Gestione IIS per rimuovere i collegamenti utilizzando questo URL dal server Web IIS locale.


1

Sono arrivato qui quando un progetto, configurato per utilizzare IIS, non si caricava perché non riusciva a trovare il sito web (myproject.mycompany.local), anche se il sito web veniva caricato correttamente nel mio browser web.

La soluzione era assicurarsi che il binding del sito in IIS 7 avesse il nome host impostato su "myproject.mycompany.local". Per accedere ai collegamenti del tuo sito:

  1. In IIS 7, seleziona il sito nel pannello di navigazione a sinistra.
  2. Nel pannello Azioni a destra, fai clic su Associazioni ...

Se il tuo sito non viene caricato nemmeno nel browser web, probabilmente è perché non hai una voce per esso nel tuo file hosts:

127.0.0.1    myproject.mycompany.local

1

Se il tuo progetto fa parte di una soluzione, apri il file della soluzione (.sln) e modifica la sezione del progetto.

ProjectSection(WebsiteProperties) = preProject
    UseIISExpress = "false"

Ha funzionato per me.


0

Questo problema stava rovinando la mia giornata in VS 2013 oggi. Ho provato tutto quanto sopra, ma non ho caricato il progetto finché non ho creato un sito Web in IIS e ho compilato questa sezione nel file .csproj (in particolare l'elemento 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>


questo ha molto senso. Tuttavia non sono riuscito a farlo funzionare.
Winnemucca

0

Ho avuto lo stesso problema, l'esecuzione come amministratore non ha funzionato per me.

L'impostazione <UseIIS>True</UseIIS>su false nel file ".csproj" del progetto potrebbe caricare temporaneamente il progetto, ma il valore tornava a True dopo il riavvio o la chiusura della soluzione.

Completando la risposta di @Cyrus (che ha funzionato per me) per una risposta più chiara, mi sono concentrato maggiormente sul file csproj.user del progetto e ho trovato la fonte esatta del problema: impostare <UseIISExpress>true</UseIISExpress>su false, quindi ricaricare il progetto. funziona bene, senza eliminare il file csproj.user. il risultato è così:

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

Dovrei menzionare che, nel mio caso, ogni volta che apro Visual Studio normalmente (non come amministratore) le impostazioni di IIS vengono restituite e devo ripetere le attività.
Homa Pourmohammadi
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.