【发布时间】:2016-09-02 17:08:06
【问题描述】:
我使用 ASP.NET Core RC1 作为服务器来托管我的 Aurelia 应用程序。我的应用程序运行良好,但最近几周发生了一些变化,因此该应用程序在 Azure 上托管时不再加载。我不确定这是否是我更改的内容,或者是否是 Azure 方面的更改,但我倾向于后者。
我已经将问题范围缩小了很多。该应用程序在本地运行良好,使用 ASP.NET Core Kestrel 服务器和其他服务器(例如 webpack-dev-server)。我有从 Visual Studio Team Services 到 Azure 网站的持续部署设置。该应用程序已发布,并且在我的 wwwroot 中自动创建了一个 web.config:
<configuration>
<system.webServer>
<handlers>
<add name="httpplatformhandler" path="*" verb="*" modules="httpPlatformHandler" resourceType="Unspecified" />
</handlers>
<httpPlatform processPath="%home%\site\approot\web.cmd" arguments="" stdoutLogEnabled="true" stdoutLogFile="\\?\%home%\LogFiles\stdout.log"></httpPlatform>
</system.webServer>
</configuration>
当我导航到我的网站时,没有任何反应,例如http://demo.azurewebsites.net/。查看控制台时,我得到一个 404。一旦我真的得到这个错误,但我似乎无法将其恢复:502 - Web 服务器在充当网关或代理服务器时收到无效响应
我将 index.html 设置为默认文档,但它没有加载。如果我明确输入,应用程序可以工作:http://demo.azurewebsites.net/index.html
如果我从 web.config 中删除 httpplatformhandler,那么它会按预期工作(自动加载 index.html)。当我完全删除 web.config 时也会发生同样的情况。在这些情况下,幕后的 MVC 6 WebAPI 根本不起作用。我认为这是合乎逻辑的,因为我删除了平台处理程序。
那么,为什么要添加这个 httpplatformhandler?有必要吗?为什么创建它?我可以调整 Azure 门户中的某些设置以防止像这样配置此处理程序吗?
我还发现这个链接似乎表明事情正在发生变化并且这个 httpplatformhandler 即将被替换:Closer Look: Hosting ASP.NET Core on Azure App Service
我在这里涉足深海,感谢任何和所有帮助。
【问题讨论】:
-
你的hosting.json中有什么?
-
我没有。我是不是该? :)
-
您通常这样做是为了不硬编码 project.json 命令中的主机/端口等服务器配置。 “web”命令或任何你用来启动红隼的命令也应该这样做
-
哦,好的。我会调查的。不确定它是否有助于解决我的问题。我的命令很简单: "web": "Microsoft.AspNet.Server.Kestrel", "ef" : "EntityFramework.Commands"
-
我遇到了与主机设置相关的类似问题。我使用
http://*:8081绑定Kestrel。这似乎导致 Azure App Service 出现问题,因为它试图绑定到 IPv4 和 IPv6。将其更改为仅绑定到 IPv4 与http://0.0.0.0:8081一起使用。我在 GitHub 上填写了一个关于它的问题 github.com/aspnet/KestrelHttpServer/issues/766。不知道是否与您的情况有关,但我也遇到了 502 问题。绑定到端口 80 在那里不起作用,因为 IIS 已经在监听它,所以我使用了 8081
标签: asp.net azure asp.net-core aurelia