在启用UseDeveloperExceptionPage的情况下获取错误消息的空白页

时间:2015-12-16 05:30:54

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

当我输入无效的网址或在我的应用程序中抛出异常时,我都会收到空白页面。我启用了UseDeveloperExceptionPage(),并且我已确认我的应用程序环境处于开发模式,并且该方法正在触发。该应用程序运行正常,但没有在浏览器中显示错误消息令人沮丧。

My 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"
  ]
}

1 个答案:

答案 0 :(得分:13)

顺序很重要 - 在您的异常块之后放置UseMvc(..),以便异常中间件可以捕获Mvc中间件抛出的异常。

如果您查看source for DeveloperExceptionPageMiddleware,您可以看到它只是在try / catch中调用管道中的下一个中间件。

但是,404s仍会显示空白页面,因为它们不是例外。要为这些配置其他内容,请查看StatusCodeErrorPages