当前位置:首页 > 系统bug > 正文内容

Unable to launch the IIS Express Web server 0x80070020 问题解决

2019-06-24 | 分类:系统bug | 评论:0人 | 浏览:113次

1.Unable to launch the IIS Express Web server 0x80070020 问题描述

 

我试图通过visual studio运行我的Web服务。我遇到了一个问题:

---------------------------
Microsoft Visual Studio
---------------------------
Unable to launch the IIS Express Web server.

Failed to register URL "http://localhost:63591/" for site "xxxxxx" application
"/". Error description: The process cannot access the file because it is being
used by another process. (0x80070020)

---------------------------
OK   
---------------------------

我看到了任务管理器,发现系统使用了PID 4,其描述是,NT Kernel & System. 所以我试图阻止它http service。所有依赖服务都已停止 但我在停止http服务方面遇到了一个问题

The service is starting or stopping.  Please try again later.

所以,我试图手动停止并启动服务。但是结束进程被禁用。如果有人可以帮助解决这个问题,将会很有帮助

 

2.Unable to launch the IIS Express Web server 0x80070020 问题解决

 

错误代码0x80070020意味着ERROR_SHARING_VIOLATION,在IIS Express(或IIS)的情况下,意味着它正在尝试侦听的端口正由另一个进程使用。

使用该netstat命令可以找出正在使用该端口的应用程序。

netstat -ao | findstr <port_number_to_search_for>

a参数告诉netstat显示所有连接和侦听端口。

o参数告诉netstat显示与连接关联的进程ID。

运行上面的netstat命令将产生如下输出:

C:\>netstat -ao | findstr 4026
TCP    12.0.0.1:4026        cs-pc:4026         LISTENING       9544

显示的最后一个数字(此处为9544)是进程ID。

    很棒的答案!您不仅描述了解决方案,还包括参数的含义。我希望所有答案都是这样的! -  Christian Payne 2016年 2月13日3:03

  • 7

    这对我有帮助,结果发现违规的PID是Chrome.exe。我重新启动了Chrome,问题就消失了。 -  astrosteve 2016年 6月28日16:47

  • 1

    很好的答案。使用这个我发现skype正在侦听端口80和端口443.我杀了skype然后能够正常启动iisexpress,现在显示我的端口80和443的额外绑定 – Alastair 2016年  9月20日在6:07

  • 2

    在高架cmd窗口中运行TASKKILL /PID 2756 /F替换2756为您的进程ID – stackoverfloweth 于17年1  月23日0:41

  • 6

    使用-n交换机也可以大大加快这一点 – 它使用“数字”输出,这意味着它不会浪费时间查询DNS以便将IP地址解析为主机名。

 

 image

我遇到过同样的问题。正如@Kautsky Lozano上面提到的另一个应用程序正在使用该端口。

所以[对于Windows操作系统]只是:

  • 打开资源监视器(任务管理器 – >性能 – >打开资源监视器)
  • 单击“ 网络”选项卡。
  • TCP Connections中,找到使用IIS Express使用的本地端口并关闭它的应用程序。(这是我的案例中的Firefox)

 

 

在我们将解决方案从Visual Studio 2012升级到2015之后,我遇到了同样的问题。我来到这里并且netstat只是发现没有其他应用程序使用相同的端口。事实证明我有相同的站点,在我的解决方案中的applicationhost.configat Users/<username>/Documents/IISExpress/configapplicationhost.configthe .vs文件夹中映射了相同的端口。我应该注意,升级后问题并没有立即开始。它只是一天早上开始失败。一对夫妇重新启动似乎也没有解决问题。

从存储在我的文档中的站点中删除冲突的站点并重新启动Visual Studio解决了该问题。

 

 

升级MVC项目时遇到此问题。我在现有的.csproj文件上复制了较新的MVC .csproj,然后回到了一个完全正常工作的项目。我没有考虑的是旧的.csproj中的现有端口号。新项目有一个新的端口号,但共享项目/组件名称。这足以让IIS Express失去理智并抛出此异常。

只需从git中挖掘旧端口号并更改IIS Express URL以将其包含在项目设置中就足以解决它。

 

在没有进入命令控制台的情况下,最简单的第一次传递就是关闭所有应用程序(包括VS),然后自己启动VS并再次尝试。可能有另一个应用程序,如您的浏览器导致冲突。在我的情况下,Chrome导致了它并在关闭所有内容并重新启动VS时解决了。我再次打开Chrome,一切都很好。

上面的netstat内容很有用,但对我而言,只有当你不能做我的建议

 

总结所有的答案。有两种解决方案。两者都适合我。- 解决方案#1终止使用相同端口的应用程序。- 解决方案#2配置IIS Express以为项目使用不同的端口。

解决方案#1 (假设错误消息中的端口是443)在命令行中运行:

netstat -ao | findstr 443

它返回:TCP 0.0.0.0:443 pe01:0 LISTENING 2904 最后一个数字(感谢@ chris-schiffhauer)是要杀死的PID。转到任务管理器 – >进程 – > [显示所有用户的进程],使用PID = 2904终止进程。就我而言,它是VmWare主机。

解决方案#2 (假设消息是:无法为站点“MyProject.Website0” 注册URL“ http:// localhost:433 /”…)。在remarkpad ++中打开以下文件:C:\Users\MY_USER_NAME\Documents\IISExpress\config\applicationhost.config在其中找到包含以下内容的行:

<site name="MyProject.Website0" id="...
...
            <bindings>
                <binding protocol="http" bindingInformation="*:80:localhost" />
                <binding protocol="https" bindingInformation="*:443:localhost" />
            </bindings>

要么更改433为其他内容,4330要么删除冲突的<binding.../>标记。

 

我刚刚遇到这个问题,即使netstat没有显示任何冲突。

以下为我修好了:

  1. 关闭Visual Studio
  2. 打开文件资源管理器
  3. 导航到违规项目的文件夹
  4. 删除objbin文件夹
  5. 删除* .user文件(这可能是可选的)
  6. 重新启动Visual Studio,然后重试

 

我已经尝试了以下内容:

  • 重新启动Visual Studio
  • 检查可能正在侦听我的特定号码的所有可用端口,但它始终返回零结果。没有进程在我的端口中侦听。
  • 我也试过使用这个但结果为零。

    netstat -aon | 找到“:80”

  • 我也试过使用但也返回零结果。

    netstat -ao | FINDSTR

所以我做的是删除这个“ Microsoft.VsHub.Server.HttpHostx64.exe ”然后我的项目成功启动并在浏览器中启动。错误是固定的。我不确定为什么但它有效。

 

刚刚浪费了半天试图修复同样的问题,我觉得我应该添加最终适合我的解决方案。

TL; DR如果netstat表明问题未被使用,仍然可以在完全不同的范围内尝试其他一些问题

我之前遇到过这个问题,但通常会找到重新启动的visual studio,更改端口(增加1)或重新启动。然而,在这种情况下,这一切都没有帮助,并netstat没有找到一个相互冲突的过程。我甚至重新安装了IIS和visual studio,并删除了其他一些我怀疑可能会干扰的程序。似乎IIS试图启动同一站点的多个实例。

最终我试着netstat没有跑步findstr。我直观地扫描了活动端口列表,并注意到虽然没有列出我尝试过的端口,但是有一些进程使用了​​类似范围内的端口。所以相反,我寻找一个免费的范围,选择一个端口号,现在似乎正在工作。

我很想知道是否有人可以解释为什么这可能有用?

 

在我的情况下,做以下操作就可以了:

  • 从.vs \\ config \ applicationhost.config中删除站点
  • 从Documents \ IISExpress \ config \ applicationhost.config中删除站点
  • 从.csproj中删除IISUrl

当我重新启动Visual Studio时,它为项目分配了一个全新的端口号并完美运行

来源:赵大虾博客(微信号/QQ号:),转载请注明出处,谢谢!

  • 评论:(0)

已有 0 位网友发表了一针见血的评论,你还等什么?

◎欢迎参与讨论!

傲笑九天志在必得, 卧薪尝胆勇者无畏

站内搜索

傲笑九天志在必得, 卧薪尝胆勇者无畏

傲笑九天志在必得, 卧薪尝胆勇者无畏