Web应用程序项目[...]配置为使用IIS。无法找到Web服务器[...]。

326

我的解决方案文件中有一个Web项目,当我打开解决方案时,该项目显示为“不可用”。 当我右键单击Web项目并重新加载项目时,出现以下错误:

The Web Application Project mycompany.myapp.mywebproject is configured to use IIS. The Web Server 'http://localhost/MyWebApp could not be found.

我没有手动设置此Web应用程序的虚拟目录。

据同事说,Visual Studio应提示我创建虚拟目录,但我没有收到提示。

我在安装IIS之前安装了VS2010。

我的开发机器设置如下:

  • Windows 7 Enterprise
  • Service Pack 1
  • 64位操作系统
  • Visual Studio 2010企业版服务包1
  • IIS版本7.5

我必须以管理员身份运行解决方案,这样它才能创建虚拟目录。 - Poat
28个回答

584

由于接受的答案需要使用IIS Manager,而IIS Express没有IIS Manager或任何UI界面,因此这里是提供给你IIS Express用户(也适用于其他人)的解决方案:

当您打开Visual Studio并收到错误消息时,请右键单击项目"Solution Explorer"并选择 "Edit {ProjectName}.csproj"

在项目文件中,更改以下行:
<UseIIS>True</UseIIS>

<UseIIS>False</UseIIS>
保存文件。

现在重新加载您的项目。
完成。

然后,您就可以打开您的项目了。如果此时您想使用IIS,则只需转到项目属性,单击 "Web" 选项卡,并选择使用IIS的选项。那里有一个按钮可以 "创建虚拟目录"。它可能会告诉您需要以管理员身份运行Visual Studio才能创建该目录,因此如有需要,请执行此操作。


39
在VS2010中,UseIIS并不在csproj文件中,而是在.csproj.user文件中。 - oleksa
2
在我的情况下,我仍然想使用IIS,所以我只是改变了URL,非常感谢,完美解决。 - kjetilh
2
这是正确的答案。该项目配置为同时使用IIS和IISExpress。 - Aaron Reed
这帮助我在IISUrl中添加端口。谢谢。 - Marko Stanojevic
2
使用VS2013,在解决方案上右键单击时,我没有看到“编辑{ProjectName}.csproj”选项。我通过进入文件系统并手动编辑.csproj文件来完成编辑。它是只读的,所以我不得不做一些小动作,但它确实起作用了。 - Al Lelopath
显示剩余3条评论

261

打开项目文件夹,删除 {Project}.csproj.user 文件,然后在 Visual Studio 中重新加载项目。


3
我们团队中只有我看到了这个IIS错误。我与之合作的开发团队使用的是相同的源代码控制.csproj文件,因此上面提到的其他解决方案并不适用于我的问题。事实证明,你提到的.csproj.user文件在我的情况下导致了这个错误。谢谢! - My Stack Overfloweth
3
在尝试了几乎所有其他方法之后,这个方法对我有效。 - David
3
这是正确的答案,它解决了您机器上项目配置方面的问题(在使用TFS时尤其重要)。 - Markus
5
对我来说这个方法有效。在我的情况下,没有 <UseIIS> 设置。 - Techgration
1
这对我来说非常有效。像Matt一样,我没有其他答案建议的UseIIS - Joseph Woodward
显示剩余5条评论

89
当发生这种情况时,最简单的解决办法是手动创建虚拟目录。
首先,您需要确保已安装了正确版本的ASP.Net,并且已安装了IIS扩展。
要做到这一点,进入C:\(Windows)\Microsoft.NET\Framework\(dotnetver)中与相关的.NET版本的文件夹(将括号内的文件夹替换为您电脑上正确的文件夹),然后运行以下命令。
aspnet_regiis.exe -i

下一步,一旦运行并完成,有时候运行。
iisreset

从命令行帮助,有时候你不需要。
接下来,打开IIS管理器,找到你的本地主机网站,选择添加一个文件夹。 浏览到包含实际ASP.Net项目的项目文件夹,并添加该文件夹。
最后,右键单击你添加的文件夹,应该会有一个选项,说“转换为应用程序”或“创建虚拟目录”或类似的内容。 !!请确保虚拟目录的名称为“MyWebApp”!! 重新加载你的解决方案,应该可以正常工作。
请注意,我提供的建议是通用的,我列出的命令是正确的,但在IIS中需要执行的步骤可能会有所不同,这取决于你的版本和账户权限。

我按照指示操作,但出现了以下错误。一开始,我删除了我的虚拟目录,因为出现了这个错误。无法添加类型为“add”的重复集合条目,其唯一键属性“name”设置为“Telerik_Web_UI_WebResource_axd”。 - dotnet-practitioner
此外,请检查您的新asp.net项目的web.config文件,它可能有两个或更多对“Telerik.WebResource.axd”的引用,但实际上只需要一个。 - Russ Clarke
我确实检查了web.config文件。当我删除有问题的条目时,就会收到错误消息,指出需要已删除的条目。 - dotnet-practitioner
FYI,我的“DefaultWebsite”仅配置为在端口443上运行,导致出现相同的错误消息。我不得不去绑定并添加端口80才能使其对我起作用。 - Randy Burden
如果之前没有发生过这种情况,但现在出现了,建议首先尝试以管理员身份打开VS(如kad81所建议)。我尝试了所有这些方法,花费了时间,而我只需要以管理员身份打开。 - Dave
显示剩余6条评论

44

这个解决方案对我有效:右击项目并选择编辑,找到如下图片中所示的代码。

将<UseIIS>True</UseIIS>更改为<UseIIS>False</UseIIS>

或者

将<IISUrl>http://example.com/</IISUrl>更改为<IISUrl>http://localhost/</IISUrl>

csproj screenshot


在一个.NET Framework 4.5.2项目中,我只需要将UseIIS标志设置为false。 - TidyDev

39

为了我的项目,我必须从.csproj文件中删除这两行。

<ProjectGuid>{3AA499DF-4A65-43B7-8965-D08A4C811834}</ProjectGuid>
<ProjectTypeGuids>{349c5851-65df-11da-9384-00065b846f21};{fae04ec0-301f-11d3-bf4b-00c04f79efbc}</ProjectTypeGuids>

我试过只删除第一个,但这还不够。

编辑:正如许多用户所指出的那样,这可能会改变您的项目类型或干扰您的源代码控制程序。由于这是一项我现在没有的学校项目,我无法调查这些问题。 尝试时请小心。至少要复制您要删除的内容。


9
这个方案行得通,应该将它标记为答案。我尝试了 Stack Overflow 提供的许多解决方案,但除了这个之外,没有一个对我起作用。 - Bose_geek
3
尝试了上述所有建议后,这个建议是真正起作用的。谢谢我的朋友! - Noble-Savage
2
这将更改项目类型,因此它不再是Web应用程序。 - Oram
3
从 .csproj 文件中删除 <ProjectGuid> 不是一个好主意。只需删除 <ProjectTypeGuids> 即可加载项目,但这也不是一个好主意,因为它会改变项目的类型,正如 @Oram 所提到的那样。如果您不想提交更改,只是在 VS 中查看代码,那么这个答案是好的。 - elshev
1
这解决了我在将承包商开发的Visual Studio 2010解决方案移植到2013中遇到的解决方案资源管理器加载错误。该解决方案文件包含两个项目:一个Web应用程序和一个Web服务。我无法让任何一个项目加载,所以在尝试打开解决方案文件后,解决方案资源管理器只显示两个空文件夹。一旦我注释掉了建议的ProjectGuid和ProjectTypeGuids行,我就可以在解决方案资源管理器中看到这些项目的依赖关系。对我来说,这是一个低风险高回报的选项,因为我可以轻松地撤消这些更改。谢谢! - JohnH

26

编辑 .csproj 或者 vbproj 文件。查找并替换下列内容:

<UseIIS>true</UseIIS> by <UseIIS>false</UseIIS>
<UseIISExpress>true</UseIISExpress> by <UseIISExpress>false</UseIISExpress>

1
我还必须将DevelopmentServerPort更改为80以外的值。 - JoshNaro
1
如果你在csproj文件中找不到设置,那么打开.csproj.user文件并在其中进行设置。 - devzero

11
原因: project.csproj文件中的IISURL没有正确反映在项目设置中,且虚拟目录未被创建。

解决方案: 将项目URL更改为正确的端口号,并创建虚拟目录以使缺失的端口号可用。

按照以下步骤操作:

第一步: 右键单击项目文件,选择编辑 project.csproj 文件。 enter image description here

第二步: 搜索 IIS 并将其从 <UseIIS>True</UseIIS> 修改为 <UseIIS>False</UseIIS> enter image description here

第三步: 右键单击项目并选择 重新加载项目。重新加载成功后,右键单击项目并选择属性enter image description here

第四步: 在 属性 => Web 下找到 Project URL 选项。 enter image description here

第五步: 将 Project URL 更改为在 错误消息<IISURL>http://localhost:8086 </IISURL> 中指示的 IIS URL。然后点击 创建虚拟目录保存所有更改enter image description here enter image description here

第六步: 重复 第二步,以便不影响远程代码库和服务器部署设置。


11

在我的情况下,这个问题是由于IIS绑定损坏造成的。具体来说,我的“http”绑定已被删除。重新创建它可以解决问题。


我遇到了非常相似的问题。我的HTTP绑定似乎有一天自己改名了 -_- <IISUrl> 的项目文件设置没有改变(感谢SVN确认了我的记忆和理智),但是iis绑定却发生了变化。修复后,项目立即加载成功。 - Patrick M
另外,请记得检查是否因某些原因更改了目标站点的SNI/主机名。这是我遇到错误的原因。 - juarola
在我的情况下,缺少了HTTPS绑定。我不得不创建新的绑定,并将其与IIS证书关联起来。 - undefined

8
这对我有用:-
使所有IIS网站仅指向本地主机(全部未分配)

输入图像说明


这已经按照您所示进行了配置,但主机名为空。我发现将其更改为“localhost”可以在我的计算机上纠正此问题,其中所有.csproj文件都指向“http://localhost/[vdirname]”。感谢提示! - Rich Moss

6

尝试使用管理员权限打开Visual Studio。在我的情况下,这样可以访问IIS站点并消除此错误。然后,我能够将项目切换到使用不需要管理员权限的IIS Express。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接