Asp.net core app.UseExceptionHandler(“Home/Error”)未转到Home/Error

Asp.net core app.UseExceptionHandler(“Home/Error”)未转到Home/Error,asp.net-core,asp.net-core-mvc,asp.net-core-1.0,Asp.net Core,Asp.net Core Mvc,Asp.net Core 1.0,我创建了一个简单的主页/错误页,我可以直接访问它,没有问题。它现在只返回一些静态HTML。当我将Startup.cs更改为以下内容时: public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory) { loggerFactory.AddConsole(Configuration.GetSection("Logging"));

我创建了一个简单的主页/错误页,我可以直接访问它,没有问题。它现在只返回一些静态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 Developer tools中的“Network”选项卡,我会看到从我的“Home/TestException”操作返回的500状态,该操作会引发异常

如果我将其切换到app.UseDeveloperExceptionPage(),该页面就会显示得很好。你知道为什么这不起作用吗

我正在使用.Net Core 1.0.0-rc1-update1

以下是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"
},
我希望被重定向到Home/Error。相反,我得到的是一个空白屏幕,如果我查看Chrome Developer tools中的“Network”选项卡,我会看到从我的“Home/TestException”操作返回的500状态,该操作会引发异常

如果我将其切换到app.UseDeveloperExceptionPage(),该页面就会显示得很好。你知道为什么这不起作用吗

我不知道为什么
app.UseExceptionHandler(“/Home/Error”)不工作-可能是因为表单异常类型你能给我们举个例外的例子吗

作为临时(或非临时)解决方案,您还可以另外使用:
app.UseStatusCodePagesWithRedirects(“/Home/code/{0}”)

这样,您也可以重定向到案例中的
错误
页面,以及
{0}
它的错误代码-您可以从地址中删除它,也可以在错误页面上使用它

更多信息:
这在rc1下不起作用。直到我将整个项目转移到RC2,这一切才开始起作用。我认为dnx组件的某些版本(现在已经过时)可能只是版本控制问题。谢谢大家的建议。

应用程序。UseStatusCodePagesWithReExecute似乎运行良好:

 if (env.IsDevelopment())
 {
     app.UseDeveloperExceptionPage();
     app.UseDatabaseErrorPage();
     app.UseBrowserLink();
 }
 else
 {
     app.UseStatusCodePagesWithReExecute("/Home/Error");
 }

我在尝试使用“Razor页面”而不是“Razor视图”进行错误处理时遇到了这个问题。问题是没有一个“剃须刀页面”工作,因为没有设置剃须刀页面的路由

我通过将.MapRazorPages()添加到我的路由中修复了它

app.UseEndpoints(cfg =>
            {
                cfg.MapControllerRoute("Fallback",
                    "{controller}/{action}/{id?}",
                    new { controller = "App", action = "Index" }
                    );

                cfg.MapRazorPages();
            });

我不能重复这个问题。请发布您的整个Configure()方法以及您使用的ASP.NET Core的版本。谢谢Clint,我用这些信息编辑了上面的文章。您的应用程序是否引发任何异常?只有当您的应用程序在托管:环境开发中运行并引发异常时,才会执行此操作。从您的
项目中可以看到这一点。json
删除行
“PreserveComilationContext”:true
和see
/Home/Error/
将起作用。您可以共享您的主控制器和视图目录结构吗?如果切换到
应用程序,您会看到什么异常情况。UseDeveloperExceptionPage()