无法启动Web服务器

65

我在Visual Studio 2012中有一个ASP.NET Web应用程序项目。当我想启动它时,会出现以下错误:

无法启动IIS Express Web服务器: 端口"4012"正在使用中

这个问题突然出现了。我该如何解决?


你尝试过改变端口号吗?-->https://dev59.com/snE85IYBdhLWcg3wJQCt - Edwin
@Edwin 那应该适用于开发服务器,而不是 IIS Express。或者在 VS2012 中现在已经改变了吗? - Steve
1
非常奇怪,昨天我关闭了电脑,一切都正常,但今天我打开电脑,却出现了这个问题。我不知道该怎么办... - TheChampp
请查看下面的答案并尝试安装TCPView来查找哪个应用程序锁定了您的端口,或者只需打开命令提示符并键入“netstat”。 - Steve
我的简单解决方法是关闭打开的浏览器,然后再试一次。那样就可以了! - DeveloperDan
显示剩余6条评论
21个回答

51

我在Visual Studio 2012中遇到了类似的问题:

错误: "无法启动IIS Express Web服务器。

注册URL http://localhost:1030/,对于站点"MySite"和应用程序"/"失败。 错误描述:该进程无法使用文件,因为另一个进程正在使用。 (0x85968574) "

原因:实际上这些端口号是在运行时动态生成的。不能保证可用。如果被其他进程占用,项目就无法运行。因此,我们需要尝试在另一个端口上运行。

解决方案:我在互联网上找到了各种解决方案,但问题仍未解决。最后,我尝试了以下解决方案:

  1. 在解决方案资源管理器中右键单击项目->属性
  2. 单击左侧的Web。
  3. 查看本地IIS Web服务器(默认情况下将选择单选按钮)。
  4. 更改项目Url的端口号 例如:http:// localhost:1030 /更改为http:// localhost:45896 / (可能高于1024)
  5. 保存更改并运行应用程序。

这会更改IIS配置文件以及自动更改所需的任何位置,因此我们不需要明确更改任何代码。这对我有用,希望对你也有用。


这里是否有任何端口号使用限制? - Tony L.
1
@TonyL,你可以在http://en.wikipedia.org/wiki/List_of_TCP_and_UDP_port_numbers找到更多有关这些端口的详细信息。 - Kedar.Aitawdekar

38

来自MSDN文库:

Visual Studio无法保证你指定的端口在运行文件系统Web站点时可用。如果该端口在运行页面时已被使用,Visual Studio会显示错误消息。

要更改IIS Express用于运行程序的端口,您应该按照MSDN上这篇文章中概述的步骤进行操作。

如何:为开发服务器指定端口

简而言之,我们需要编辑文件%systemdrive%:\Users\<username>\Documents\IISExpress\config并更改此文件中找到的绑定信息以及更改其他配置以适合IIS Express。

由于修复问题的方法并不是十分简单,我建议关闭尝试在您的开发电脑上使用该端口访问的应用程序。寻找类似Microsoft的TCPView工具,有助于查找占用您端口的应用程序。通常只是浏览器占用了该端口。


2
现在,在阅读了http://msdn.microsoft.com/en-us/library/ms178109%28v=VS.100%29.aspx之后,所有工作都没有问题了。最后一个问题是为什么会突然出现这种情况,以及为什么我以前没有遇到过这个问题。我每天都在处理asp.net项目。 - TheChampp
你找到是哪个应用程序在使用那个端口了吗? - Steve
1
通过TCPView,我发现有两个具有相同端口和信息的字段:“System 4 TCP owner-PC 4012 owner-PC 0 LISTENING”。 - TheChampp
3
+1 支持TCP视图!如今能够正确诊断问题而不仅是“更换端口!”真是太令人耳目一新了! - flipchart
通常只是浏览器的问题 - 就是这样!我关闭了所有浏览器,问题就消失了!!! - andrew.fox
显示剩余4条评论

13

从命令提示符中运行"netstat -b",以查看使用4012端口的应用程序。 如果杀死该进程,IIS Express将能够使用4012端口启动。


+1 是在命令行默认提供的简单命令。在我的情况下,原来 Thunderbird 绑定到了配置为我的开发网站的本地端口。 - cdlk
太好了。原来是Windows商店。 - Todd Skelton

9
杀死IIS Express工作进程对我来说解决了这个问题;我在尝试调试两个并发的Visual Studio 2015实例并在两个Web解决方案之间切换时遇到了这个问题。如果这是一个持续的问题,那么修改解决方案可能更好,但在紧急情况下,例如代码审查,我更喜欢使用此方法。 IIS Express Worker Process

6

一种解决方法是清除您浏览器的历史记录。然后重新启动 Visual Studio 并重新运行应用程序。

如果这种方法不起作用,那么是时候为您的开发服务器 (IIS Express) 更改端口号了。

希望对您有所帮助。


2
如果出现突然的情况(一切正常工作,但突然出现“无法启动IIS Express Web服务器”错误),通常对我有用的解决方案是:

  • 结束IISExpress进程
  • 更重要的是,关闭所有浏览器进程(Firefox,Chrome,Chrome Dev Tools,IE等)

非常有效 :) 如果不行,请尝试从本主题中使用其他解决方案。

附言:我将其发布为答案,以便可以轻松找到,尽管有人在评论中写过。


2
尝试关闭Visual Studio并使用“以管理员身份运行”的选项重新打开它。

1

当我同时运行 Fiddler 和 Visual Studio 时,我也遇到了这个错误。退出 Fiddler 并重新运行应用程序对我很有帮助。


1

导航到IIS Express

cd "C:\Program Files (x86)\IIS Express\"

run this appcmd.exe list site /xml | appcmd delete site /in

此外,清除 %temp% 中的临时文件并注销或重新启动。这将删除所有站点,享受吧!

1
从配置文件中删除多余的绑定。
以管理员身份运行命令提示符,然后键入以下命令。
1. netsh http show urlacl
您将看到使用过的 URL 列表,请确保您当前正在尝试使用的 URL 在此列表中。在下一步中,您需要删除此预留。
2. netsh http delete urlacl url=/在上面的列表中列出的完整 URL/
确认后,重新启动 IIS。

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