Azure Windows Server 2016上的ASP.NET5 CLR网站正在运行,但在浏览器中提供404 NOT FOUND

时间:2015-11-17 15:47:29

标签: asp.net .net asp.net-mvc azure windows-server-2016

我正在尝试在Azure上托管的Windows Server 2016实例上运行示例ASP.NET5 MVC应用程序。所有指标都显示应用程序在服务器上运行良好,但是当我尝试浏览URL(使用服务器的主机名或公共IP)时,我得到404. NOT FOUND错误。

  • 端口在Azure和防火墙中打开。
  • 该应用程序在Microsoft.Net.Http.Server.Weblistener
  • 上运行
  • 运行时为clr-1.0.0-beta5 x64。我已经验证运行时已正确安装并正在使用。
  • 我已经从VS2015发布了应用程序并手动转移到服务器,我使用命令" web.cmd"这是自动生成的,我得到一个整洁的输出说:

info : [Microsoft.Net.Http.Server.WebListener] Start info : [Microsoft.Net.Http.Server.WebListener] Listening on prefix: http://localhost:80/ Started

当我在我的本地开发者机器上以相同的方式运行应用程序时,我得到相同的输出,并且它可以浏览localhost:80来访问该网站。

对我来说,这表明

  1. 该应用正常运行
  2. 端口配置正确(当我关闭网络服务器时,我得到一个不同的错误ERR_CONNECTION_TIMED_OUT而不是404)
  3. 我的猜测是WebListener服务器出了问题,没有正确地将传入的请求路由到我的应用程序,或者我的MVC代码可能出错(尽管它在localhost上工作正常)。

    对于一个相当含糊的问题感到抱歉,我对所有想法和意见持开放态度,请随时提出进一步的问题,以便我提供更多信息。

    干杯, 尼科

1 个答案:

答案 0 :(得分:0)

正如@Rob和@Amy指出的那样,问题是WebListener只有http://localhost:80地址的绑定。当我尝试使用我的服务器主机名浏览它时,我得到了404 Not Found。

解决方案是将hosting.ini中的--server.urls从http://localhost:80更改为我正确的主机名。此处还找到了有关答案的更多信息:

How to Change Server.Urls with Microsoft.AspNet.Server.WebListener(stackoverflow.com)