【问题标题】:Using port 80 with IIS Express inside of VS2010在 VS2010 内部使用端口 80 和 IIS Express
【发布时间】:2026-02-09 06:05:01
【问题描述】:

我有一个应用程序,我试图在 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,它似乎被运行在进程 ID 4 上的System 使用,这是 NT 内核和系统进程。我不知道这是否会阻止我使用该端口。我想这可能是因为 http.sys 持有该端口,所以没有其他人可以使用它?

通过修改C:\Users\[MyUser]\Documents\IISExpress\config\applicationhost.config 文件的默认绑定,我确实设法让 IIS Express 在端口 80 上运行,虽然我可以通过这种方式手动启动 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 独有)有任何问题吗?

【问题讨论】:

  • 应用程序是否在另一个端口下成功运行?你确定你已经使用 reg_iis 命令注册了 asp.net 4 吗?你能得到一个简单的网络表单应用程序来运行吗?
  • 它确实在另一个端口上运行,MVC 在这种情况下工作得很好。只是在端口 80 上,MVC 似乎不起作用。其他使用 .NET 4.0 的网站可以完美运行,所以不是这样。
  • 这是为我提供的报告服务。
  • 显而易见的问题,为什么不直接在 WIn7 之外使用本地 IIS 服务器?
  • 因为 IIS7+ 的配置提供了 web.config 文件的集成,所以没有理由再将 IIS 安装在开发机器上。更容易使用 IIS Express 并将所有内容都包含在项目中,然后可以将整个站点设置提交到源代码管理。这使得部署、单元测试等更加简化。如果不需要,为什么还要在系统上提供额外的服务?

标签: asp.net-mvc visual-studio-2010 http asp.net-mvc-3 iis-express


【解决方案1】:

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

【讨论】:

  • 而且...如果您从未安装过 Web Deploy Agent...?
【解决方案2】:

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

你可以找到它

控制面板 -> 服务

【讨论】:

    【解决方案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 的东西根本不工作?

    【讨论】:

    • MVC 3 的东西根本不适合我,我不知道为什么,最近也没有再尝试过。
    • 如果可能,您可能希望避免直接在 IIS Express 的配置文件中设置绑定。每次启动 IIS Express 时,其中的任何绑定都会导致 IIS Express 开始为这些应用程序提供服务。即使它是由不相关的项目或在 VS 之外启动的。如果可能,请尝试在项目配置文件中设置您的绑定。您还可以在项目属性页面中获得特定于 IIS Express 的其他设置(在选择项目的情况下按 F4),只有在您有项目设置以使用 IIS Express 时才会显示这些设置。
    • 我不确定您将如何设置多个绑定,就像您在上面的 sn-p 中那样?它们会是单独的项目吗?
    • 当我说“IIS Express 将在每次启动 IIS Express 时开始为这些应用程序提供服务”时,我认为我是不正确的。当 IIS Express 仅启动绑定的服务请求时,它被指示初始化。这就是为什么即使配置文件中有多个绑定,您也只能在右键单击 IIS Express 图标并查看正在服务的站点时才能看到您的站点。虽然我仍然希望让 IIS 处理这个而不是自己编辑配置文件。
    【解决方案4】:

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

    netstat -o -n -a | findstr 0.0:80

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

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

    【讨论】:

    • 我有这个问题,当我像你一样搜索时,建议使用端口的进程 PID 为 4,即“系统和压缩内存”。这是 Windows (10) 的一部分。
    • 当我写这篇文章时,Windows 10 还没有推出,所以我不知道它是否有任何不同,或者您的情况或场景是否也不同。
    【解决方案5】:

    那个解决方案帮助了我。

    在 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

    【讨论】:

      最近更新 更多