启用 UseDeveloperExceptionPage 获取错误消息的空白页
Getting blank pages for error messages with UseDeveloperExceptionPage enabled
当我输入无效的 URL 或当我的应用程序中抛出异常时,我得到的都是空白页。我启用了 UseDeveloperExceptionPage(),并且我已确认我的应用程序环境处于开发模式,并且该方法正在触发。该应用程序运行良好,但没有在浏览器中显示错误消息令人沮丧。
我的Startup.cs配置方法:
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
app.UseIISPlatformHandler();
app.UseStaticFiles();
app.UseIdentity();
app.UseMvc(m =>
m.MapRoute(
name: "default",
template: "{controller}/{action}/{id?}",
defaults: new { controller = "Home", action = "Index" }
));
if(env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
else
{
app.UseExceptionHandler("/Home/Error");
}
CreateSampleData(app.ApplicationServices).Wait();
}
我的project.json
{
"version": "1.0.0-*",
"dependencies": {
"Microsoft.AspNet.IISPlatformHandler": "1.0.0-rc1-final",
"Microsoft.AspNet.Server.Kestrel": "1.0.0-rc1-final",
"Microsoft.AspNet.Mvc": "6.0.0-rc1-final",
"EntityFramework.MicrosoftSqlServer": "7.0.0-rc1-final",
"EntityFramework.Commands": "7.0.0-rc1-final",
"Microsoft.Framework.ConfigurationModel.Json": "1.0.0-beta4",
"Microsoft.AspNet.Diagnostics": "1.0.0-rc1-final",
"Microsoft.AspNet.StaticFiles": "1.0.0-rc1-final",
"Microsoft.AspNet.Identity.EntityFramework": "3.0.0-rc1-final",
"Microsoft.AspNet.Authentication.Cookies": "1.0.0-rc1-final"
},
"commands": {
"web": "Microsoft.AspNet.Server.Kestrel",
"ef": "EntityFramework.Commands"
},
"frameworks": {
"dnx451": { },
"dnxcore50": { }
},
"exclude": [
"wwwroot",
"node_modules"
],
"publishExclude": [
"**.user",
"**.vspscc"
]
}
顺序很重要 - 将 UseMvc(..)
放在异常块之后,以便异常中间件可以捕获 Mvc 中间件抛出的异常。
如果您看一下 source for DeveloperExceptionPageMiddleware
,您会发现它只是在 try/catch.
中调用管道中的下一个中间件
404s 但仍会显示空白页,因为它们也不例外。要为这些配置其他内容,请查看 StatusCodeErrorPages.
当我输入无效的 URL 或当我的应用程序中抛出异常时,我得到的都是空白页。我启用了 UseDeveloperExceptionPage(),并且我已确认我的应用程序环境处于开发模式,并且该方法正在触发。该应用程序运行良好,但没有在浏览器中显示错误消息令人沮丧。
我的Startup.cs配置方法:
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
app.UseIISPlatformHandler();
app.UseStaticFiles();
app.UseIdentity();
app.UseMvc(m =>
m.MapRoute(
name: "default",
template: "{controller}/{action}/{id?}",
defaults: new { controller = "Home", action = "Index" }
));
if(env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
else
{
app.UseExceptionHandler("/Home/Error");
}
CreateSampleData(app.ApplicationServices).Wait();
}
我的project.json
{
"version": "1.0.0-*",
"dependencies": {
"Microsoft.AspNet.IISPlatformHandler": "1.0.0-rc1-final",
"Microsoft.AspNet.Server.Kestrel": "1.0.0-rc1-final",
"Microsoft.AspNet.Mvc": "6.0.0-rc1-final",
"EntityFramework.MicrosoftSqlServer": "7.0.0-rc1-final",
"EntityFramework.Commands": "7.0.0-rc1-final",
"Microsoft.Framework.ConfigurationModel.Json": "1.0.0-beta4",
"Microsoft.AspNet.Diagnostics": "1.0.0-rc1-final",
"Microsoft.AspNet.StaticFiles": "1.0.0-rc1-final",
"Microsoft.AspNet.Identity.EntityFramework": "3.0.0-rc1-final",
"Microsoft.AspNet.Authentication.Cookies": "1.0.0-rc1-final"
},
"commands": {
"web": "Microsoft.AspNet.Server.Kestrel",
"ef": "EntityFramework.Commands"
},
"frameworks": {
"dnx451": { },
"dnxcore50": { }
},
"exclude": [
"wwwroot",
"node_modules"
],
"publishExclude": [
"**.user",
"**.vspscc"
]
}
顺序很重要 - 将 UseMvc(..)
放在异常块之后,以便异常中间件可以捕获 Mvc 中间件抛出的异常。
如果您看一下 source for DeveloperExceptionPageMiddleware
,您会发现它只是在 try/catch.
404s 但仍会显示空白页,因为它们也不例外。要为这些配置其他内容,请查看 StatusCodeErrorPages.