【问题标题】:ASPNETCORE_ENVIRONMENT environment variable to Development ErrorASPNETCORE_ENVIRONMENT 环境变量到开发错误
【发布时间】:2018-02-27 21:14:17
【问题描述】:

我的项目位于 .Net Core 1.1 和 cosmosDB 后端。我们使用 Auth0 作为身份验证。登录后,用户可以输入数据并将其保存在管理页面中。在保存时,我们将用户名(大多数情况下是电子邮件地址)存储在同一记录中。一切正常。但是对于某些用户,我会收到此错误,

切换到开发环境将显示有关所发生错误的更详细信息。 不应在已部署的应用程序中启用开发环境,因为它可能导致向最终用户显示异常的敏感信息。对于本地调试,可以通过将 ASPNETCORE_ENVIRONMENT 环境变量设置为 Development 并重新启动应用程序来启用开发环境。

我查看了 SO 和其他一些博客。正如他们建议将项目中的午餐设置.json 中的 ASPNETCORE_ENVIRONMENT 更改为生产。 但是没有运气。

我在做什么,每次我在开发中更改我的代码时,我都会将我的代码提交到 SVN 然后发布它,就像每个人一样。

注意:我没有 web.config 文件,也不想手动添加。

【问题讨论】:

  • 感谢您的快速回复。是的!我正在使用它。在这里if (env.IsDevelopment()) { app.UseDeveloperExceptionPage(); app.UseBrowserLink(); } else { app.UseExceptionHandler("/Home/Error"); }
  • 抱歉,这太宽泛了。你到底想达到什么目的?您需要查看生产环境中的确切错误吗?如果是 - 那么您应该考虑为未处理的异常等添加一些日志记录。有很多示例如何处理此问题。在这种情况下,您不需要使用 ASPNETCORE_ENVIRONMENT 。如果您想向最终用户显示不同的错误消息,请使用 UseExceptionHandler 并使用不同/修改当前的 ErrorView。正如您在 Dev env 的代码中看到的那样,它使用 UseDeveloperExceptionPage(),这对于生产来说是不安全的。
  • 我唯一的问题是如何覆盖这个?为什么它适用于某些用户,而不是所有用户。我已将 ASPNETCORE_ENVIRONMENT 设置为生产,这仍然是为什么。
  • 您有一些用户的错误不是因为您设置了ASPNETCORE_ENVIRONMENT=Production,而是因为您有一些不能 100% 重现的内部错误。上面的错误并没有说明如何解决这个问题,它只是说如果你切换到ASPNETCORE_ENVIRONMENT=Development,由于你的应用程序中的这个代码if (env.IsDevelopment()) {app.UseDeveloperExceptionPage(); .. 它可能会向你显示更详细的错误(带有一些堆栈跟踪等)。您应该找到确切的错误(使用日志、查找如何在本地重现等),
  • 您如何托管/服务您的应用程序?你是从你的 IDE 运行它,还是它是一个已发布的网站?是 IIS 吗?

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


【解决方案1】:

知道您不是在调试中运行您的应用程序,而是在 Azure 上发布它(如评论中所述),您必须更改您在 Azure 中的环境变量。 launchSettings.json 不是为了那个。

我找到了一个描述如何在 Azure 上配置它的答案,所以我不会在这里重复:How and where to define an environment variable on azure

希望对您有所帮助。

【讨论】:

  • 感谢兄弟提供此链接和信息。我会检查并通知您。
  • 当然,希望对您有所帮助!
猜你喜欢
  • 1970-01-01
  • 2016-05-09
  • 1970-01-01
  • 2016-11-04
  • 1970-01-01
  • 2014-10-28
  • 2021-06-27
  • 1970-01-01
  • 2014-09-16
相关资源
最近更新 更多