VS 2012无法加载使用IIS和自定义绑定主机的项目 - 认为它使用的是IIS Express

时间:2013-07-15 15:11:37

标签: asp.net iis visual-studio-2012 iis-express

我有一个使用IIS的ASP.NET项目。 IIS站点配置为使用自定义绑定主机名。项目文件包含以下设置:

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

以这种方式配置项目时,我可以从http://custom.host.name/访问该站点,并在调试时VS自动附加到IIS工作进程。

当我重新加载项目时(通过关闭/重新打开解决方案或通过在项目上下文菜单中卸载/重新加载),会发生意外情况。项目无法加载,解决方案资源管理器中项目名称右侧显示(load failed),并显示消息框,并显示以下消息(它也显示在“输出”窗口中):

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.

我尝试从IIS Express applicationhost.config文件中删除项目网站配置,但它没有帮助。

将项目映射到默认站点下的IIS应用程序时,我没有遇到此问题。

VS版本是Ultimate 2012 Update 3。

12 个答案:

答案 0 :(得分:200)

以管理员身份打开并没有为我解决问题。修复此问题的方法是打开 .csproj.csproj.user个文件,并确保两者都UseIISExpress设置为false

就我而言,.csproj.user文件覆盖了.csproj文件,即使SaveServerSettingsInUserFile已标记为false

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

答案 1 :(得分:46)

解决方案是:  删除*.csproj.user文件!

答案 2 :(得分:21)

我已将“ SaveServerSettingsInUserFile ”设为True,这对我有用。

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

来源:click here

答案 3 :(得分:4)

当您使用启用IISexpress,applicationHost.Config(位于%userprofile%\ iisexpress \ config)时,您必须选中“将服务器设置应用于所有用户(存储在项目文件中)”选项以避免您在yourProject.csproj.user中编写的设置 project settings

这样做与编辑project.csproj文件和编写相同 <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> 如果启用IISExpress且applicationHost.config文件不包含与项目设置相关的条目,则只需按“创建虚拟目录”按钮即可完成!

希望这会有所帮助

答案 4 :(得分:3)

在我的情况下删除* .csproj.user文件工作正常

答案 5 :(得分:2)

我有同样的问题,对我来说,我所要做的就是以管理员身份开放视觉工作室,这解决了我的问题。

如此简单地右键单击visual studio 2012并单击“以管理员身份运行”。希望这有帮助

答案 6 :(得分:2)

对于我来说,Visual Studio 2015 Preview与Windows 7 64位的结合使用:
1.删​​除* .csproj.user文件和
2.解决方案文件中的<UseIISExpress>false</UseIISExpress>
步骤2的步骤:在Visual Studio中右键单击Project ==&gt;卸载===&gt;编辑解决方案

答案 7 :(得分:1)

这就够了

在项目文件x.csproj

中注释此行
<!--<UseIIS>True</UseIIS>-->

x.csproj:错误:Web项目“x”的URL“http://localhost/x”配置为使用IIS Express作为Web服务器,但当前在本地IIS Web服务器上配置了URL。若要打开此项目,必须使用IIS管理器从本地IIS Web服务器使用此URL删除绑定。

答案 8 :(得分:1)

当一个配置为使用IIS的项目因为无法找到网站(myproject.mycompany.local)而无法加载时,我就登陆了这里 - 即使网站在我的网络浏览器中正常加载。 / p>

解决方案是确保IIS 7中的站点绑定将主机名设置为“myproject.mycompany.local”。要访问您网站的绑定:

  1. 在IIS 7中,从左侧导航面板中选择该站点。
  2. 在右侧的“动作”面板中,点击绑定...
  3. 如果您的网站也未在网络浏览器中加载,可能是因为您的主机文件中没有该条目:

    127.0.0.1    myproject.mycompany.local
    

答案 9 :(得分:1)

如果您的项目是解决方案的一部分,请打开解决方案文件(.sln)并编辑项目部分。

ProjectSection(WebsiteProperties) = preProject
    UseIISExpress = "false"

它为我工作。

答案 10 :(得分:0)

这个问题今天在VS 2013中毁了我的一天。我尝试了以上所有,但是直到我在IIS中创建了一个网站并在.csproj文件中填充了这一部分(特别是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>

答案 11 :(得分:0)

我有同样的问题,以管理员身份运行对我不起作用。

在项目的“.csproj”文件中将<UseIIS>True</UseIIS>设置为false会暂时加载项目,但在重新启动或关闭解决方案后,值将返回True。

完成@Cyrus的答案(对我有用)以获得更整洁的答案,我更专注于项目的csproj.user文件并找到问题的确切来源:将<UseIISExpress>true</UseIISExpress>设置为false,然后重新加载项目。工作正常,不删除csproj.user文件。结果是这样的:

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