将端口80与VS2010内部的IIS Express一起使用

我有一个应用程序,试图在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(即NT内核和系统进程)上运行的“ 0”使用。我不知道这是否会阻止我使用该端口。我以为这可能是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平台安装程序中的VS2010 SP1捆绑包捆绑在一起。很好,因为我确实想要WebDeploy的客户端工具,但是它也在系统上安装了代理,该代理正在端口80上进行监视。很快,我现在可以在VS2010中使用端口80用于IIS Express。 与在IIS Express中的端口80上运行有关的新问题 但是我的应用程序是MVC3应用程序,我遇到了一个问题,因为MVC3根本没有捕获我的请求,因此它没有触发我的控制器动作或类似的东西,而是一个txt文件。可以访问我的应用程序的根目录,因此我知道IIS Express就是我的网站。任何人在端口80上的IIS Express中运行MVC3(我不知道它是否是MVC3专有的)时都有任何问题吗?     
已邀请:
只需发布我对这个问题的答案,这样我就可以将问题标记为已回答。 检查http://learn.iis.net/page.aspx/1005/handling-url-binding-failures-in-iis-express/ 如果已安装,请禁用Web Deploy代理服务。     
就我而言,我通过停止“ SQL Server Reporting Services”解决了该问题 你可以在找到它 控制面板->服务     
非常感谢您发现\'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根本不起作用?     
我没有安装Web部署代理,但遇到了此问题。您还可以通过运行此命令来找出正在使用该端口的应用程序或服务,然后在任务管理器中对其进行跟踪,以解决此问题。 netstat -o -n -a | findstr 0.0:80 然后打开任务管理器,转到“进程”,单击“显示所有用户的进程”复选框,然后单击“查看”菜单,然后转到“列”,添加PID列。 将netstat命令中的进程ID与任务管理器中的PID匹配,您将找到正在使用该端口的服务或应用程序。     
该解决方案对我有所帮助。 在Windows 7或Windows Vista上,从提升的命令提示符下,运行以下命令: 安慰
netsh http add urlacl url=http://localhost:80/ user=everyone
此命令将允许任何用户的应用程序(包括您自己的IIS Express实例)使用端口80运行,而无需管理特权。要限制对您自己的访问,请用您的Windows身份替换“所有人”。 从该来源获取-> https://docs.microsoft.com/zh-cn/iis/extensions/using-iis-express/handling-url-binding-failures-in-iis-express     

要回复问题请先登录注册