app.UseExceptionHandler("Home/Error") 不会 Home/Error
app.UseExceptionHandler("Home/Error") not going to Home/Error
我创建了一个简单的 Home/Error 页面,我可以毫无问题地直接访问它。现在只是 returns 一些静态的 HTML。当我将 Startup.cs 更改为:
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
loggerFactory.AddConsole(Configuration.GetSection("Logging"));
loggerFactory.AddDebug();
if (env.IsDevelopment())
{
app.UseBrowserLink();
//app.UseDeveloperExceptionPage();
app.UseExceptionHandler("/Home/Error");
}
else
{
app.UseExceptionHandler("/Home/Error");
}
app.UseIISPlatformHandler();
app.UseSession();
app.UseStaticFiles();
app.UseMvc(routes =>
{
routes.MapRoute(
name: "default",
template: "{controller=Home}/{action=Index}/{id?}");
});
}
我希望被重定向到 Home/Error。相反,我得到一个空白屏幕,如果我查看 Chrome 开发人员工具中的 "Network" 选项卡,我会看到从我的 "Home/TestException" 操作返回的 500 状态会引发异常。
如果我将其切换为 app.UseDeveloperExceptionPage(),该页面就会正常显示。知道为什么这不起作用吗?
我正在使用 .Net Core 1.0.0-rc1-update1。
"dependencies" 来自 Project.json:
"dependencies": {
"AutoMapper": "4.2.1",
"Dapper": "1.42.0",
"Microsoft.AspNet.DataProtection": "1.0.0-rc1-final",
"Microsoft.AspNet.Diagnostics": "1.0.0-rc1-final",
"Microsoft.AspNet.Http.Abstractions": "1.0.0-rc1-final",
"Microsoft.AspNet.Identity.EntityFramework": "2.2.1",
"Microsoft.AspNet.IISPlatformHandler": "1.0.0-rc1-final",
"Microsoft.AspNet.Mvc": "6.0.0-rc1-final",
"Microsoft.AspNet.Mvc.TagHelpers": "6.0.0-rc1-final",
"Microsoft.AspNet.Server.Kestrel": "1.0.0-rc1-final",
"Microsoft.AspNet.Session": "1.0.0-rc1-final",
"Microsoft.AspNet.StaticFiles": "1.0.0-rc1-final",
"Microsoft.AspNet.Tooling.Razor": "1.0.0-rc1-final",
"Microsoft.Extensions.Configuration.FileProviderExtensions": "1.0.0-rc1-final",
"Microsoft.Extensions.Configuration.Json": "1.0.0-rc1-final",
"Microsoft.Extensions.Logging": "1.0.0-rc1-final",
"Microsoft.Extensions.Logging.Console": "1.0.0-rc1-final",
"Microsoft.Extensions.Logging.Debug": "1.0.0-rc1-final",
"Microsoft.VisualStudio.Web.BrowserLink.Loader": "14.0.0-rc1-final",
"Newtonsoft.Json": "8.0.3",
"Oracle.ManagedDataAccess": "12.1.24160419",
"System.Net.Http": "4.0.0"
},
I would expect to get redirected to Home/Error. Instead I am getting a blank screen and if I look at the "Network" tab in Chrome Developer tools, I see a 500 Status returned from my "Home/TestException" action which throws an exception.
If I switch it to app.UseDeveloperExceptionPage(), that page comes up just fine. Any ideas why this is not working?
我不确定为什么 app.UseExceptionHandler("/Home/Error");
不起作用 - 也许这取决于异常类型? - 你能给我们举个例外的例子吗?
作为临时(或非临时)解决方案,您还可以额外使用:app.UseStatusCodePagesWithRedirects("/Home/Code/{0}");
这也会让您重定向到您的案例中的 Error
页面,并且 {0}
它是错误代码 - 您可以从地址中删除它,也可以在错误页面上使用它。
更多信息:
MVC Core Error Handling
这在 rc1 下不起作用。直到我将整个项目移动到 RC2 之后,这一切才开始起作用。我认为可能只是某些版本的 dnx 组件(现在已过时)的版本控制问题。谢谢大家的建议。
app.UseStatusCodePagesWithReExecute 似乎效果不错:
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
app.UseDatabaseErrorPage();
app.UseBrowserLink();
}
else
{
app.UseStatusCodePagesWithReExecute("/Home/Error");
}
我 运行 在尝试使用“Razor page”而不是“Razor view[=17=”时遇到了这个问题]",进行错误处理。问题是 none 的“Razor 页面”正在运行,因为未设置 Razor 页面的路由。
我通过将 .MapRazorPages() 添加到我的路由来修复它
app.UseEndpoints(cfg =>
{
cfg.MapControllerRoute("Fallback",
"{controller}/{action}/{id?}",
new { controller = "App", action = "Index" }
);
cfg.MapRazorPages();
});
我创建了一个简单的 Home/Error 页面,我可以毫无问题地直接访问它。现在只是 returns 一些静态的 HTML。当我将 Startup.cs 更改为:
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
loggerFactory.AddConsole(Configuration.GetSection("Logging"));
loggerFactory.AddDebug();
if (env.IsDevelopment())
{
app.UseBrowserLink();
//app.UseDeveloperExceptionPage();
app.UseExceptionHandler("/Home/Error");
}
else
{
app.UseExceptionHandler("/Home/Error");
}
app.UseIISPlatformHandler();
app.UseSession();
app.UseStaticFiles();
app.UseMvc(routes =>
{
routes.MapRoute(
name: "default",
template: "{controller=Home}/{action=Index}/{id?}");
});
}
我希望被重定向到 Home/Error。相反,我得到一个空白屏幕,如果我查看 Chrome 开发人员工具中的 "Network" 选项卡,我会看到从我的 "Home/TestException" 操作返回的 500 状态会引发异常。
如果我将其切换为 app.UseDeveloperExceptionPage(),该页面就会正常显示。知道为什么这不起作用吗?
我正在使用 .Net Core 1.0.0-rc1-update1。
"dependencies" 来自 Project.json:
"dependencies": {
"AutoMapper": "4.2.1",
"Dapper": "1.42.0",
"Microsoft.AspNet.DataProtection": "1.0.0-rc1-final",
"Microsoft.AspNet.Diagnostics": "1.0.0-rc1-final",
"Microsoft.AspNet.Http.Abstractions": "1.0.0-rc1-final",
"Microsoft.AspNet.Identity.EntityFramework": "2.2.1",
"Microsoft.AspNet.IISPlatformHandler": "1.0.0-rc1-final",
"Microsoft.AspNet.Mvc": "6.0.0-rc1-final",
"Microsoft.AspNet.Mvc.TagHelpers": "6.0.0-rc1-final",
"Microsoft.AspNet.Server.Kestrel": "1.0.0-rc1-final",
"Microsoft.AspNet.Session": "1.0.0-rc1-final",
"Microsoft.AspNet.StaticFiles": "1.0.0-rc1-final",
"Microsoft.AspNet.Tooling.Razor": "1.0.0-rc1-final",
"Microsoft.Extensions.Configuration.FileProviderExtensions": "1.0.0-rc1-final",
"Microsoft.Extensions.Configuration.Json": "1.0.0-rc1-final",
"Microsoft.Extensions.Logging": "1.0.0-rc1-final",
"Microsoft.Extensions.Logging.Console": "1.0.0-rc1-final",
"Microsoft.Extensions.Logging.Debug": "1.0.0-rc1-final",
"Microsoft.VisualStudio.Web.BrowserLink.Loader": "14.0.0-rc1-final",
"Newtonsoft.Json": "8.0.3",
"Oracle.ManagedDataAccess": "12.1.24160419",
"System.Net.Http": "4.0.0"
},
I would expect to get redirected to Home/Error. Instead I am getting a blank screen and if I look at the "Network" tab in Chrome Developer tools, I see a 500 Status returned from my "Home/TestException" action which throws an exception.
If I switch it to app.UseDeveloperExceptionPage(), that page comes up just fine. Any ideas why this is not working?
我不确定为什么 app.UseExceptionHandler("/Home/Error");
不起作用 - 也许这取决于异常类型? - 你能给我们举个例外的例子吗?
作为临时(或非临时)解决方案,您还可以额外使用:app.UseStatusCodePagesWithRedirects("/Home/Code/{0}");
这也会让您重定向到您的案例中的 Error
页面,并且 {0}
它是错误代码 - 您可以从地址中删除它,也可以在错误页面上使用它。
更多信息: MVC Core Error Handling
这在 rc1 下不起作用。直到我将整个项目移动到 RC2 之后,这一切才开始起作用。我认为可能只是某些版本的 dnx 组件(现在已过时)的版本控制问题。谢谢大家的建议。
app.UseStatusCodePagesWithReExecute 似乎效果不错:
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
app.UseDatabaseErrorPage();
app.UseBrowserLink();
}
else
{
app.UseStatusCodePagesWithReExecute("/Home/Error");
}
我 运行 在尝试使用“Razor page”而不是“Razor view[=17=”时遇到了这个问题]",进行错误处理。问题是 none 的“Razor 页面”正在运行,因为未设置 Razor 页面的路由。
我通过将 .MapRazorPages() 添加到我的路由来修复它
app.UseEndpoints(cfg =>
{
cfg.MapControllerRoute("Fallback",
"{controller}/{action}/{id?}",
new { controller = "App", action = "Index" }
);
cfg.MapRazorPages();
});