31

我有一个应用程序,我试图在 VS2010 的 IIS Express 下在我的开发系统上运行,我需要使用端口 80,但我无法让它工作。我正在查找有关保留端口 80 的信息。 http://learn.iis.net/page.aspx/1005/handling-url-binding-failures-in-iis-express/

但即使在这样做之后,我仍然收到来自 vs2010 的错误消息,显示 “无法启动 IIS Express Web 服务器。端口 '80' 正在使用中。”

我不知道还能尝试什么。我使用 Process Hacker 来追踪端口 80,它似乎是System在进程 ID 4 上运行的,它是 NT 内核和系统进程。我不知道这是否会阻止我使用该端口。我想这可能是 http.sys 持有该端口的结果,所以没有其他人可以使用它?

通过修改文件的默认绑定,我确实设法让 IIS Express 在端口 80 上运行C:\Users\[MyUser]\Documents\IISExpress\config\applicationhost.config,虽然我可以通过这种方式手动启动 IIS Express,但 VS 随后会出现错误,因为该端口上已经存在绑定。所以我将它改回 8080,使用 VS2010 中的按钮创建虚拟目录(我猜这与输入站点绑定相同)但是当我去调试应用程序时仍然出现错误。VS2010 中是否有一些硬编码的东西不会让它在端口 80 上启动 IIS Express?

更新和修复:好的,所以我发现了更多需要检查的东西,我确实解决了我的问题,但没有完全解决。一篇帖子建议确保我没有安装 SQL 报告服务,因为它可以在端口 80 上进行监控,我曾经安装过它,但现在没有了,这不是我遇到的问题。然而,我确实意识到我已经安装了 WebDeploy。它与Web Platform Installer的 VS2010 SP1 捆绑包捆绑在一起。这很好,因为我确实想要来自 WebDeploy 的客户端工具,但它还在我的系统上安装了代理,该代理在端口 80 上进行监控。我去了我的服务列表并停止了Web Deploy Agent Service. 完成此操作后,我现在可以在 VS2010 中为 IIS Express 使用端口 80。

与在 IIS Express 中的端口 80 上运行相关的新问题 但是我的应用程序是一个 MVC3 应用程序,我遇到了一个问题,因为 MVC3 根本没有捕获我的请求,所以它没有触发我的控制器操作或类似的东西,但是可以访问我的应用程序根目录中的 txt 文件,因此我知道 IIS Express 正在服务的是我的网站。有人在 IIS Express 的 80 端口上运行 MVC3(我不知道它是否是 MVC3 独有)有任何问题吗?

4

5 回答 5

23

只需发布我自己对此问题的答案,以便我可以将问题标记为已回答。检查http://learn.iis.net/page.aspx/1005/handling-url-binding-failures-in-iis-express/ 如果您安装了 Web 部署代理服务,请禁用它。

于 2011-04-21T15:22:45.763 回答
4

就我而言,我通过停止“SQL Server Reporting Services”解决了这个问题

你可以在

控制面板 -> 服务

于 2014-06-18T00:57:58.963 回答
3

非常感谢您发现“Web Deploy Agent”服务!这是最近才打开的,因为我已经完美地运行了所有这些,并且今天刚刚安装了更新版本的 IIS Express,并且在端口 80 上遇到了完全相同的问题。所以现在我已经关闭了 Web Deploy 代理,我的系统再次正常工作。

至于 ASP.NET MVC3,它在端口 80 和端口 443 上对我来说非常有用。绑定这两个端口以便 IIS Express 能够将它们用作普通用户(其中​​大部分来自您在上面发布的链接),并安装我们使用的 SSL 证书。我在 applicationhost.config 文件中手动创建了所有条目以使其正常工作,相应的站点部分如下:

    <sites>
        <site name="PHP: A Main" id="2144116512">
            <application path="/">
                <virtualDirectory path="/" physicalPath="C:\var\www\amain\www" />
                <virtualDirectory path="/images" physicalPath="C:\var\www\images" />
            </application>
            <application path="/admin">
                <virtualDirectory path="/" physicalPath="C:\var\www\amain\www\admin" />
            </application>
            <bindings>
                <binding protocol="http" bindingInformation="*:80:test.amainhobbies.com" />
                <binding protocol="https" bindingInformation="*:443:test.amainhobbies.com" />
            </bindings>
        </site>
        <siteDefaults>
            <logFile logFormat="W3C" directory="%IIS_USER_HOME%\Logs" />
            <traceFailedRequestsLogging directory="%IIS_USER_HOME%\TraceLogFiles" enabled="true" maxLogFileSizeKB="1024" />
        </siteDefaults>
        <applicationDefaults applicationPool="Clr4IntegratedAppPool" />
        <virtualDirectoryDefaults allowSubDirConfig="true" />
    </sites>

请注意,我的网站是 PHP 和 ASP.NET MVC3 组合的网站,因为我们正在重写整个东西以在 ASP.NET MVC3 上运行,所以大部分网站仍然是 PHP,但很多新东西是现在运行 ASP.NET MVC3,这些东西对我有用。

您的 IIS Express 是否在 Visual Studio 之外与 MVC3 一起正常工作,或者 MVC3 的东西根本不工作?

于 2011-04-21T00:00:24.343 回答
0

我没有安装 Web 部署代理,但遇到了这个问题。您还可以通过运行此命令来找出正在使用该端口的应用程序或服务,然后在任务管理器中跟踪它来解决此问题。

网络统计-o -n -a | 发现str 0.0:80

然后打开任务管理器,转到进程,单击复选框“显示所有用户的进程”,然后单击查看菜单并转到列,添加 PID 列。

将 netstat 命令中的进程 ID 与任务管理器中的 PID 匹配,您将找到正在使用该端口的服务或应用程序。

于 2014-02-10T21:27:13.777 回答
0

该解决方案帮助了我。

在 Windows 7 或 Windows Vista 上,从提升的命令提示符运行以下命令:控制台

netsh http add urlacl url=http://localhost:80/ user=everyone

此命令将允许任何用户的应用程序(包括您自己的 IIS Express 实例)使​​用端口 80 运行,而无需管理权限。要限制对您自己的访问,请将“everyone”替换为您的 Windows 身份。

取自该来源-> https://docs.microsoft.com/en-us/iis/extensions/using-iis-express/handling-url-binding-failures-in-iis-express

于 2019-02-27T09:40:31.997 回答