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 默认处理程序映射上

从 Azure 中托管的 ASP.NET Core 5.0 MVC 站点调用 API/服务的间歇性套接字异常

Asp.Net 5 项目托管

自托管 asp.net mvc

IIS上asp.net网站启动不了,错误如下图:

与 windows 服务共享 asp.net mvc 会话