ASP.NET 5 |使用 80 端口托管 MVC 6 项目
Posted
技术标签:
【中文标题】ASP.NET 5 |使用 80 端口托管 MVC 6 项目【英文标题】:ASP.NET5 | MVC6 project hosting using 80 port 【发布时间】:2016-01-12 16:20:52 【问题描述】:有一个MVC 6 (beta 7)
项目。我通过 VisualStudio 2015 发布向导将它发布到本地文件夹(在 Windows Server 2012
上)。这是hosting.ini
文件:
server=Microsoft.AspNet.Server.WebListener
server.urls=http://localhost:80
这是project.json
中启动服务器的命令:
"web": "Microsoft.AspNet.Hosting --config hosting.ini",
我通过执行发布向导从本地文件夹生成的web.cmd
来启动服务器。
网站在本地机器上运行良好 (http://localhost)。
好的,现在最有趣了。我尝试从外部计算机打开它并查看
HTTP 错误 404。未找到请求的资源。
响应头是:
连接:关闭
内容长度:315
内容类型:文本/html;
charset=us-ascii 服务器:Microsoft-HTTPAPI/2.0
好的,我发现WAMP/Apache
托管存在类似问题,例如this 和this。
我尝试执行以下操作:
-
禁用万维网发布服务
禁用 Web 部署代理服务
确保没有 SQL Server Reporting Services 和分支缓存服务
禁用 IIS
为防火墙中的 80 端口添加规则
通过
PID
杀死tasklist /M httpapi.dll
命令的所有进程(之后netstat -ano
命令不再监听80 端口),然后启动应用程序。
但这并没有帮助。
注意:
这是在第 6 条之后启动应用程序后tasklist /M httpapi.dll
命令的结果:
这是一个 PID 为 1800 的进程:
什么以及为什么会阻止 80 端口?
我怎样才能解决这个问题?
谢谢!
【问题讨论】:
使用 MVC 5,您必须以管理员身份运行 Visual Studio 以获取特定范围内的端口(包括 80)。你试过吗? @MuhammadRehanSaeed 是的,我总是以管理员身份运行它。 【参考方案1】:我认为问题在于您对网站的绑定。在你的配置中你说:
server.urls=http://localhost:80
这意味着只有当您的浏览器窗口中有 URL http://localhost
时,该站点才会回复您,但是例如,您可以从外部 URL 使用 http://192.168.100.100
。尝试更改 URL 以匹配(显然使用您自己的 IP 地址或机器名称):
server.urls=http://192.168.100.100:80
我认为您还可以通过用分号或逗号分隔多个 URL 来指定多个 URL:
server.urls=http://localhost:80;http://server:80;http://192.168.100.100:80
【讨论】:
是的,你是对的!非常感谢。这太容易了! :)以上是关于ASP.NET 5 |使用 80 端口托管 MVC 6 项目的主要内容,如果未能解决你的问题,请参考以下文章
ASP.Net MVC 3/4 托管在 IIS 7.5 默认处理程序映射上