VS 2012 não pode carregar projeto que usa IIS com host de ligação personalizada - pensa que está usando IIS Express

85

Eu tenho um projeto ASP.NET que usa o IIS. O site do IIS está configurado para usar o nome do host de ligação personalizada. O arquivo de projeto contém as seguintes configurações:

...
<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 o projeto é configurado dessa forma, posso acessar o site de http://custom.host.name/e o VS automaticamente se conecta ao processo de trabalho do IIS durante a depuração.

Quando recarrego o projeto (fechando / reabrindo a solução ou descarregando / recarregando no menu de contexto do projeto), algo inesperado acontece. O projeto falha ao carregar, (load failed)é exibido à direita do nome do projeto no gerenciador de soluções e a caixa de mensagem é mostrada com a seguinte mensagem (também é exibida na janela Saída):

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.

Tentei remover a configuração do site do projeto do applicationhost.configarquivo IIS Express , mas não ajudou.

Não encontro esse problema ao mapear o projeto para o aplicativo IIS no site padrão.

A versão do VS é o Ultimate 2012 Update 3.

Igor Antonov
fonte
3
Sim, estou tendo o mesmo problema com o VS2013, pois usei o IIS Express uma vez com este projeto ... Muito chato!
kipusoep 01 de
3
Tente editar os arquivos csproj ou csproj.user e definir UseIISExpresscomo false. stackoverflow.com/a/19103452/138938
Jon Crowell
2
@HeadofCatering, eu acabei de ter esse problema, mas UseIISExpress já estava definido como falso no arquivo .csproj do projeto. No entanto, apenas pesquisar por IIS me levou a encontrar a marca XML "<UseIIS> True </UseIIS>" dentro do arquivo csproj (em <ProjectExtensions><VisualStudio><FlavorProperties> <WebProjectProperties>) e simplesmente configurá-la como "< UseIIS> True </UseIIS> "fez com que o Visual Studio pudesse carregar o projeto novamente. Esperançosamente, isso não teve nenhum outro efeito indesejado!
mgrandi
2
@mgrandi Cuidado com o erro de digitação; configuração <UseIIS>True</UseIIS>para <UseIIS>False</UseIIS>fazer o truque para mim também. Obrigado pela sugestão!
Dion V.

Respostas:

205

Abrir como administrador não resolveu o problema para mim. Que fixa-lo para mim foi a abertura tanto o .csproje .csproj.userarquivos e garantindo que ambos tinham UseIISExpressdefinido para false.

No meu caso, o .csproj.userarquivo estava sobrescrevendo o .csprojarquivo, embora SaveServerSettingsInUserFileestivesse marcado false.

<Project ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    <UseIISExpress>false</UseIISExpress> 
    <!-- ... -->
</Project>
Jonah
fonte
48
Excluir csproj.user finalmente resolveu meu problema. Obrigado!
Bryan Sumter
Muito obrigado, eu estava quebrando a cabeça olhando as configurações do csproj. Tudo parecia bem. Depois de excluir o arquivo csproj.user, ele começou a carregar o projeto sem qualquer reclamação ++ 1
Esen
47

A solução é: deletar *.csproj.userarquivo!

Cyrus
fonte
MAS depois de excluir *.csproj.user, você não pode editar*.csproj
niz_sh
21

Eu defini " SaveServerSettingsInUserFile " como True e funcionou para mim.

<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: clique aqui

Liakat Ali Mondol
fonte
4

quando você usa habilita o uso para IISexpress, o applicationHost.Config (localizado em% userprofile% \ iisexpress \ config), você deve marcar a opção "Aplicar configurações de servidor a todos os usuários (armazenar em arquivo de projeto)" para evitar que suas configurações sejam escritas em yourProject.csproj.user configurações do projeto

fazer isso é o mesmo que editar seu arquivo project.csproj e gravar <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 você habilitar IISExpress e seu arquivo applicationHost.config não contiver a entrada relacionada às configurações de seu projeto, você só precisa apertar o botão "Criar diretório virtual" e pronto !

espero que isto ajude

zobidafly
fonte
Que versão de estúdio visual é essa? Não tenho essa opção no VS Pro 2013
Matt R
@Matt R: Eu comprei o VS2012 pro, então presumo que seria o mesmo para a sua versão. no explorador de soluções, selecione seu projeto web.application, clique com o botão direito e selecione "propriedades" - então uma janela com guias aparece, selecione a guia "Web" e você verá a captura de tela que incluí na resposta ... e desculpe pelo atraso responda!
zobidafly
3

No meu caso, a exclusão do arquivo * .csproj.user funcionou bem

Haddis
fonte
2

Eu tive o mesmo problema, para mim tudo o que tive que fazer foi abrir o Visual Studio como administrador e isso resolveu o problema para mim.

tão simples, clique com o botão direito no visual studio 2012 e clique em "executar como administrador". espero que isto ajude

Gautam Beri
fonte
2

Para mim, a combinação de ambos funcionou para o Visual Studio 2015 Preview com Windows 7 de 64 bits:
1. exclua o arquivo * .csproj.user e
2. <UseIISExpress>false</UseIISExpress>no arquivo de solução.
Etapas para a Etapa 2: No Visual Studio, clique com o botão direito do mouse em Projeto ==> Descarregar ===> Editar a Solução

Sunil Yadav
fonte
1

Isto é suficiente

Comente esta linha no arquivo de projeto x.csproj

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

x.csproj: erro: O URL ' http: // localhost / x ' para o projeto da Web 'x' está configurado para usar o IIS Express como o servidor da web, mas o URL está atualmente configurado no servidor da web IIS local. Para abrir este projeto, você deve usar o Gerenciador do IIS para remover as ligações usando esta URL do servidor da web IIS local.

samar samar
fonte
1

Eu cheguei aqui quando um projeto, configurado para usar o IIS, não carregava porque não conseguia encontrar o site (myproject.mycompany.local) - embora o site tenha carregado corretamente no meu navegador.

A solução foi garantir que a ligação do site no IIS 7 tivesse o nome do host definido como "myproject.mycompany.local". Para obter as ligações do seu site:

  1. No IIS 7, selecione o site no painel de navegação esquerdo.
  2. No painel Ações à direita, clique em Ligações ...

Se o seu site também não carregar no navegador da web, é provável que você não tenha uma entrada para ele no arquivo hosts:

127.0.0.1    myproject.mycompany.local
Seth
fonte
1

Se o seu projeto faz parte de uma solução, abra o arquivo da solução (.sln) e edite a seção do projeto.

ProjectSection(WebsiteProperties) = preProject
    UseIISExpress = "false"

Funcionou para mim.

Sr. Nsubuga
fonte
0

Este problema estava arruinando meu dia no VS 2013 hoje. Tentei todos os itens acima, mas não carreguei o projeto até que criei um site no IIS e preenchi esta seção no arquivo .csproj (especialmente o 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>

Eric Farr
fonte
isso faz muito sentido. Eu não conseguia fazer isso funcionar.
Winnemucca
0

Eu tive o mesmo problema, executar como administrador não funcionou para mim.

Definir <UseIIS>True</UseIIS>como false no arquivo ".csproj" do projeto pode carregar temporariamente o projeto, mas o valor estava retornando para True após reiniciar ou fechar a solução.

Concluindo a resposta de @Cyrus (que funcionou para mim) para obter uma resposta mais simples, me concentrei mais no arquivo csproj.user do projeto e encontrei a origem exata do problema: definir <UseIISExpress>true</UseIISExpress>como false e, em seguida, recarreguei o projeto. funcionando bem, sem excluir o arquivo csproj.user. resultado é assim:

<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
fonte
Devo mencionar que, no meu caso, cada vez que abro o Visual Studio normalmente (não como administrador) as configurações do IIS voltam e tenho que fazer as tarefas novamente.
Homa Pourmohammadi