Asp.net mvc 在VS2010内部使用端口80和IIS Express

Asp.net mvc 在VS2010内部使用端口80和IIS Express,asp.net-mvc,visual-studio-2010,http,asp.net-mvc-3,iis-express,Asp.net Mvc,Visual Studio 2010,Http,Asp.net Mvc 3,Iis Express,我有一个应用程序,我正试图在VS2010的IIS Express下在我的开发系统上运行,我需要使用端口80,但我无法让它工作。我正在查找有关80端口被保留的信息。 但即使这样做了,我仍然从vs2010中得到一个错误,它说 无法启动IIS Express Web服务器。端口“80”正在使用中 我不知道还能尝试什么。我使用Process Hacker跟踪端口80,它似乎被运行在进程ID 4上的系统使用,进程ID 4是NT内核和系统进程。我不知道这是否会阻止我使用这个端口。我想这可能是http.sy

我有一个应用程序,我正试图在VS2010的IIS Express下在我的开发系统上运行,我需要使用端口80,但我无法让它工作。我正在查找有关80端口被保留的信息。

但即使这样做了,我仍然从vs2010中得到一个错误,它说 无法启动IIS Express Web服务器。端口“80”正在使用中

我不知道还能尝试什么。我使用Process Hacker跟踪端口80,它似乎被运行在进程ID 4上的
系统使用,进程ID 4是NT内核和系统进程。我不知道这是否会阻止我使用这个端口。我想这可能是http.sys持有该端口的结果,因此其他任何人都无法使用它

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

更新和修复:好的,所以我找到了更多要检查的东西,我确实解决了我的问题,但没有完全解决。一篇帖子建议确保我没有安装SQL reporting services,因为它可以在端口80上进行监控。我曾经安装过它,但现在不再安装了,这不是我遇到的问题。然而,我确实意识到我已经安装了WebDeploy。它与来自的VS2010 SP1捆绑包捆绑在一起。这很好,因为我确实需要WebDeploy提供的客户端工具,但它也在我的系统上安装了代理,该系统在端口80上进行监视。我转到服务列表并停止了
webdeployagent服务
。一旦我这样做了,我现在就可以从VS2010中为IIS Express使用端口80

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

非常感谢您发现“Web Deploy Agent”服务!这是最近才启用的功能,因为我让所有这些功能都工作得很好,就在今天安装了IIS Express的更新版本,并且在端口80上遇到了完全相同的问题。因此,现在我已经关闭了Web部署代理,我的系统再次正常工作

至于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部署代理服务,请禁用它。

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

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

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


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

在我的例子中,我通过停止“SQL Server Reporting Services”解决了这个问题

你可以在网上找到它


控制面板->服务那个解决方案帮助了我

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

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


从该源获取->

应用程序是否在其他端口下成功运行?是否确实已使用reg_iis命令注册asp.net 4?你能让一个简单的webforms应用程序运行吗?它确实在另一个端口上运行,MVC在这种情况下工作得非常好。只是在端口80上,MVC似乎无法工作。其他使用.NET 4.0的网站工作得很好,但不是这样。这是为我提供的reporting services。一个明显的问题是,为什么不在WIn7下使用本地IIS服务器呢?因为集成了IIS7+的配置和web.config文件,就没有理由再在开发机器上安装IIS了。使用IIS Express和将所有内容包含在
netsh http add urlacl url=http://localhost:80/ user=everyone