【发布时间】: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