【发布时间】:2014-08-25 03:43:42
【问题描述】:
我有一个使用 ASP.NET Core 玩的相当简单的网站。我正在从命令行运行应用程序,并且网站正在返回静态文件,但是当我尝试发出应该由 MVC 处理的请求时,我不断收到 500 个错误。我如何查看错误是什么?错误是显示到浏览器还是记录到控制台都没有关系,我只是想要一种方法来查看错误是什么。
【问题讨论】:
标签: c# asp.net-core
我有一个使用 ASP.NET Core 玩的相当简单的网站。我正在从命令行运行应用程序,并且网站正在返回静态文件,但是当我尝试发出应该由 MVC 处理的请求时,我不断收到 500 个错误。我如何查看错误是什么?错误是显示到浏览器还是记录到控制台都没有关系,我只是想要一种方法来查看错误是什么。
【问题讨论】:
标签: c# asp.net-core
添加错误页面中间件如图here:
app.UseDeveloperExceptionPage();
【讨论】:
Microsoft.AspNet.Diagnostics。见github.com/aspnet/Diagnostics/tree/dev/src/…
beta8 更新:
在 beta8 中,Microsoft 将名称更改为 UseDeveloperExceptionPage。所以如果你想使用ErrorPage,调用:
app.UseDeveloperExceptionPage();
这是相关Github issue的链接。ErrorPageOptions 与 beta6/7 中的相同。
你可以使用
app.UseErrorPage(ErrorPageOptions.ShowAll)
直到 Asp.Net Mvc 的 beta5。
从 beta6 开始,ErrorPageOptions.ShowAll 已被删除。您现在可以使用不带参数的版本
app.UseErrorPage();
或创建一个 ErrorPageOptions 对象并通过设置 SourceCodeLineCount 指定要在错误周围显示多少行。
app.UseErrorPage(new ErrorPageOptions() {SourceCodeLineCount = 100});
其他信息
他们删除了this commit 中ErrorPageOptions 的多个属性。
之前:
public class ErrorPageOptions
{
private bool _defaultVisibility;
private bool? _showExceptionDetails;
private bool? _showSourceCode;
private bool? _showQuery;
private bool? _showCookies;
private bool? _showHeaders;
private bool? _showEnvironment;
...
}
之后:
public class ErrorPageOptions
{
public int SourceCodeLineCount { get; set; }
public IFileProvider FileProvider { get; set; }
...
}
所以现在你只能设置要打印多少行源代码。
【讨论】:
如果您不关心您的错误详细信息会暴露给外界,您可以直接在浏览器中启用错误详细信息,而无需更改任何代码。 (仅在 IIS 8.5 中测试过):
IIS Manager 左侧Connections 部分,左键单击选择您的Site。 Feature View 打开Error Pages。 Actions 部分,单击Edit Feature Settings
Error Responses中,选择第二个Detailed errors选项,然后选择Ok(或者如果您担心向世界公开内容,请从第三个选项开始,如果您可以打开本地浏览器.. . 即本地主机:...)这应该足以让您能够看到确切的错误... 重要提示:如果您必须使用中间的 Detailed errors 选项,请务必在调试后将其关闭问题。这可以为黑客提供闯入您的服务器所需的一切。
【讨论】:
如果向世界公开错误的详细信息并不重要,那么您可以在 web.config 中激活详细的错误页面。
只需在位于您网站根文件夹的 web.config 文件的 <configuration> / <system.web> 中添加 <customErrors mode="Off"/>。
更详细的解释: How to Use Web.Config customErrors for ASP.NET
这样做的好处是您不必重新部署您的网站
【讨论】: