首页 文章

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

提问于
浏览
1

TLDR

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

Details

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

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

:( error 500

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

:( error 500 with details

灵感来自this SO answer,我将我的环境标志( ASPNETCORE_ENVIRONMENT )切换到了Azure "Application Settings"刀片中的 Development ,并给了它一个镜头(所以我可以看到结果 . )我犹豫不决这样做因为我的sql连接字符串在那里并且取决于在环境(开发是本地的,prod是azure sql)所以我保证在某个时候出现错误(当它试图命中数据库时 . )这在 Configure 方法中通过 app.UseDeveloperExceptionPage() 给了我一个非常有用和奇怪的错误消息...

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

因此,我将环境变量切换回'Production'并从"Overview"刀片重新启动了Web应用程序(以防万一 . )然后我将 app.UseDeveloperExceptionPage 行移出 if (env.IsDevelopment()) { 块(因此它始终可用 . )构建,重新发布(保留"Remove additional files at destination"框暂时检查,需要更长时间才能删除,然后推送所有内容但更安全),并刷新页面,我又回到了通用错误500消息(没有其他详细信息)...

:( error 500 with details

我知道customErrors is no longer relevant,作为我之前看到 UseDeveloperExceptionPage 的结果的证据 . 另外,我已启用"Detailed error messages" ...

Diagnostic blade settings

我错过了什么?!

EDIT1:launchSettings.json 中将我的本地开发环境标志设置为"Production" ...

"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() 后,我没有被发表(无论环境如何!)

1 回答

  • 0

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

相关问题