1

我正在尝试在 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)

我的猜测是 WebListener 服务器有问题,没有正确地将传入请求路由到我的应用程序,或者我的 MVC 代码可能有问题(尽管它在 localhost 上运行良好)。

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

干杯,尼科

4

1 回答 1

0

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

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

如何使用 Microsoft.AspNet.Server.WebListener 更改 Server.Urls (stackoverflow.com)

于 2015-11-18T12:40:12.923 回答