【问题标题】:ASPNETCORE works locally in VS 2015, but error 500 when published to AzureASPNETCORE 在 VS 2015 本地工作,但发布到 Azure 时出现错误 500
【发布时间】:2016-08-18 04:06:27
【问题描述】:

TLDR

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

详情

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

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

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

this SO answer 的启发,我在 Azure“应用程序设置”刀片中将我的环境标志 (ASPNETCORE_ENVIRONMENT) 切换为 Development 并试了一下(所以我可以看到结果。)我犹豫不决这是因为我的 sql 连接字符串在那里并且根据环境而变化(dev 是本地的,prod 是 azure sql)所以我保证在某些时候会出错(当它试图命中 db。)这给了我一个非常有用和在Configure 方法中通过app.UseDeveloperExceptionPage() 的奇怪错误消息...

它声称我的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 我看到该文件实际上并不存在(但通用和生产文件是。)当您选择发布或调试时,VS 是否以某种方式过滤这些或设置环境变量进行打包?我在包/发布日志中没有看到任何迹象。

所以,我将环境变量切换回“生产”并从“概述”刀片重新启动 Web 应用程序(以防万一。)然后我将 app.UseDeveloperExceptionPage 行移出 if (env.IsDevelopment()) { 块(所以它始终可用。)构建,重新发布(暂时选中“在目标位置删除其他文件”框,删除需要更长的时间,然后推送所有内容,但更安全),并刷新页面,然后我回到再次出现一般错误 500 消息(无其他详细信息)...

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

我到底错过了什么?!

EDIT1:launchSettings.json...中将我的本地开发环境标志设置为“生产”...

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

...一切仍然正常!但在 Azure 上仍然出现错误 500!

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

  "publishOptions": {
    "include": [
      "wwwroot",
      "Views",
      "appsettings.json",
      "appsettings.Production.json",
      "web.config"
    ]
  },

...仍然不清楚为什么,在将app.UseDeveloperExceptionPage() 移出环境检查后,我无法看到开发人员异常页面。但现在我意识到可能还有其他丢失的文件没有发布(无论环境如何!)

【问题讨论】:

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


    【解决方案1】:

    这是publishOptions 不包括应用程序需要存在的所有.json 文件......呃。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-10-16
      • 2012-09-25
      • 1970-01-01
      • 1970-01-01
      • 2021-09-26
      • 1970-01-01
      • 2021-06-18
      相关资源
      最近更新 更多