【问题标题】:app.UseExceptionHandler("Home/Error") not going to Home/Errorapp.UseExceptionHandler("Home/Error") 不去 Home/Error
【发布时间】:2016-06-09 13:09:38
【问题描述】:

我创建了一个简单的主页/错误页面,我可以毫无问题地直接访问该页面。它现在只返回一些静态 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 开发人员工具中的“网络”选项卡,我会看到我的“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"
},

【问题讨论】:

  • 我无法复制此问题。请发布您的整个 Configure() 方法以及您使用的 ASP.NET Core 版本。
  • 谢谢克林特,我用这些信息编辑了我上面的帖子。
  • 您的应用程序是否抛出异常?仅当您的应用程序在Hosting:Environment Development 中运行并引发异常时才会执行此操作。从您的project.json 删除行"preserveCompilationContext": true 并查看/Home/Error/ 的简单方法将起作用。
  • 你能分享你的主控制器和视图目录结构吗?
  • 如果您切换到app.UseDeveloperExceptionPage(),您会看到什么异常?

标签: asp.net-core asp.net-core-mvc asp.net-core-1.0


【解决方案1】:

app.UseStatusCodePagesWithReExecute 似乎运作良好:

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

【讨论】:

    【解决方案2】:

    我希望被重定向到 Home/Error。相反,我得到一个空白屏幕,如果我查看 Chrome 开发人员工具中的“网络”选项卡,我会看到我的“Home/TestException”操作返回了 500 状态,该操作引发了异常。

    如果我将其切换到 app.UseDeveloperExceptionPage(),则该页面会正常显示。任何想法为什么这不起作用?

    我不知道为什么app.UseExceptionHandler("/Home/Error"); 不起作用 - 也许这取决于表单异常类型? - 你能给我们举个例外的例子吗?

    作为临时(或非)解决方案,您还可以额外使用:app.UseStatusCodePagesWithRedirects("/Home/Code/{0}");

    在你的情况下,这也会让你重定向到 Error 页面,{0} 它是错误代码 - 你可以从地址中删除它,或者你可以在错误页面上使用它。

    更多信息: MVC Core Error Handling

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        【解决方案4】:

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

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

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2022-12-27
          • 2011-01-10
          • 2017-07-10
          • 2020-03-08
          • 2017-10-25
          • 2018-11-17
          • 2018-06-26
          • 2012-02-23
          相关资源
          最近更新 更多