ASPNETCORE在VS 2015中本地工作,但在发布到Azure时出现错误500

时间:2016-08-18 04:06:27

标签: asp.net-mvc azure asp.net-core

TLDR

以前工作(以前的版本)推送到Azure现在提供了非描述性错误500,但在两台不同的本地PC上运行没有问题。我无法确定原因并希望得到一些帮助。

详情

我有一个我一直在开发的ASP.NET核心Web应用程序。该应用程序在本地运行没有问题(以及在我从我的私人git克隆项目的另一台PC上。)

但是,我发布到我的Azure网络应用程序(几个月前我用之前的版本做过的事情),现在它失败了(这是一个新创建的Web应用程序实例。)我返回了一个相当普通的错误500页,当我尝试查看该应用...

:( error 500

我在阅读this并在天蓝色的门户网站中挖掘后终于检查了日志流,并返回了一个包含更多信息的错误页面,但仍然没有任何实用性。

:( error 500 with details

受到this SO answer的启发,我在Azure“应用程序设置”刀片中将我的环境标志(ASPNETCORE_ENVIRONMENT)切换为Development并给了它一个镜头(所以我可以看到结果。 )我犹豫是否这样做因为我的sql连接字符串在那里并且因环境而异(dev是本地的,prod是azure sql)所以我保证在某个时候出现错误(当它试图命中数据库时。)在app.UseDeveloperExceptionPage()方法中通过Configure向我提供了一条非常有用且奇怪的错误消息...

IO error, missing application.Development.json

声称我的appsettings.Development.json不存在!究竟怎么没有在发布推动中做到这一点?!

Startup.cs的相关行......

public Startup(IHostingEnvironment env) {
    var builder = new ConfigurationBuilder()
        .SetBasePath(env.ContentRootPath)
        .AddJsonFile("appsettings.json")
        .AddJsonFile($"appsettings.{env.EnvironmentName}.json")
        .AddEnvironmentVariables();

    Configuration = builder.Build();
}  // LINE 41 reported

FTP到/ site / wwwroot我看到文件实际上并不存在(但通用和生产的文件都是。)当你选择Release或Debug时,VS会以某种方式过滤这些或设置环境变量进行打包吗?我没有在包/发布日志中看到任何迹象。

publish settings screen

因此,我将环境变量切换回“生产”并从“概述”刀片重新启动了Web应用程序(以防万一。)然后我将app.UseDeveloperExceptionPage行移出了if (env.IsDevelopment()) {阻止(所以它始终可用。)构建,重新发布(保持“删除目的地中的其他文件”框暂时检查,删除所需的时间更长,然后推送所有内容,但更安全),并刷新页面,我' m再次回到通用错误500消息(没有其他细节)......

:( error 500 with details

我知道customErrors is no longer relevant,作为我之前看到UseDeveloperExceptionPage的结果的证据。此外,我已启用“详细错误消息”...

Diagnostic blade settings

我到底在想什么?!

EDIT1:launchSettings.json中将我的本地dev env标志设置为“Production”...

  "environmentVariables": {
    "ASPNETCORE_ENVIRONMENT": "Production"
  }

......一切都还行不错!然而,Azure上的错误仍为500!

EDIT2: 我意识到为什么appsettings.Development.json没有发布,它不在project.json的{​​{1}}部分......

publishInclude

...仍然不清楚为什么,在环境检查之外移动 "publishOptions": { "include": [ "wwwroot", "Views", "appsettings.json", "appsettings.Production.json", "web.config" ] }, 之后,我无法看到开发人员异常页面。但现在我意识到可能还有其他丢失的文件没有发布(无论环境如何!)

1 个答案:

答案 0 :(得分:0)

publishOptions不包括应用所需的所有.json个文件......呃。

相关问题