VS 2012无法加载使用带有自定义绑定主机的IIS的项目-认为它正在使用IIS Express


85

我有一个使用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 Expressapplicationhost.config文件中删除项目站点配置,但这没有帮助。

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

VS版本是Ultimate 2012 Update 3。


3
是的,自从我在该项目中使用IIS Express一次以来,VS2013就遇到了同样的问题……真烦人!
kipusoep

3
尝试编辑csproj或csproj.user文件并将其设置UseIISExpress为false。stackoverflow.com/a/19103452/138938
乔恩·克罗威尔

2
@HeadofCatering,我只是遇到了这个问题,但是UseIISExpress已在项目.csproj文件中设置为false。但是,仅搜索IIS会使我在csproj文件(在<ProjectExtensions> <VisualStudio> <FlavorProperties> <WebProjectProperties>中)内找到“ <UseIIS> True </ UseIIS>” XML标记,并将其设置为“ < UseIIS> True </ UseIIS>”使得Visual Studio可以再次加载该项目。希望这不会有任何其他意外的影响!
mgrandi

2
@mgrandi介意错字;设置<UseIIS>True</UseIIS><UseIIS>False</UseIIS>的伎俩对我来说太。谢谢你的建议!
Dion V.

Answers:


205

以管理员身份打开并不能解决我的问题。对我来说,解决此问题的方法是同时打开.csproj.csproj.user文件,并确保两者都UseIISExpress设置为false

就我而言,即使标记了,.csproj.user文件也将覆盖.csproj文件。SaveServerSettingsInUserFilefalse

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

48
删除csproj.user终于解决了我的问题。谢谢!
Bryan Sumter

非常感谢您,我在检查csproj设置时不知所措。一切看起来都很好。我删除csproj.user文件后,它开始加载项目而没有任何投诉++ 1
Esen


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>

来源:点击这里


4

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

这样做与编辑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文件不包含与项目设置相关的条目,则只需按“创建虚拟目录”按钮并完成!

希望这可以帮助


这是Visual Studio的哪个版本?我在VS Pro 2013中没有此选项
Matt R

@Matt R:我有VS2012 pro,所以我认为它与您的版本相同。在解决方案资源管理器中,选择您的web.application项目,右键单击并选择“属性”-然后出现一个选项卡式窗口,选择“ Web”选项卡,您应该会看到我随附的屏幕截图...回答!
zobidafly 2016年


2

我遇到了同样的问题,对我来说,我要做的就是以管理员身份打开Visual Studio,这为我解决了这个问题。

如此简单,右键单击Visual Studio 2012,然后单击“以管理员身份运行”。希望这可以帮助


2

对我而言,两者的组合都适用于Windows 7 64位版本的Visual Studio 2015 Preview:
1.删​​除* .csproj.user文件和
2.<UseIISExpress>false</UseIISExpress>在解决方案文件中。
步骤2的步骤:在Visual Studio中,右键单击Project ==>卸载===>编辑解决方案


1

这就够了

在项目文件x.csproj中注释此行

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

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


1

当配置为使用IIS的项目无法加载,因为它找不到网站(myproject.mycompany.local)时,即使该网站在我的Web浏览器中加载得很好,我也无法登录。

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

  1. 在IIS 7中,在左侧导航面板中选择站点。
  2. 在右侧的“动作”面板中,单击“绑定...”。

如果您的网站也未加载到网络浏览器中,则可能是因为您的主机文件中没有该条目:

127.0.0.1    myproject.mycompany.local

1

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

ProjectSection(WebsiteProperties) = preProject
    UseIISExpress = "false"

它为我工作。


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>


这很有意义。我无法正常工作。
Winnemucca

0

我遇到了同样的问题,以管理员身份运行对我没有用。

设置 <UseIIS>True</UseIIS>暂时在项目的“ .csproj”文件中为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>

应当提到的是,就我而言,每次我正常(而不以管理员身份)打开Visual Studio时,IIS设置都会返回,并且我必须再次执行任务。
Homa Pourmohammadi
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.