ASP.NET Core中app.UseDeveloperExceptionPage和app.UseExceptionHandler方法有什么用

在新建一个ASP.NET Core项目后,在项目Startup类的Configure方法中默认会添加两个方法的调用,app.UseDeveloperExceptionPage和app.UseExceptionHandler,如下所示:

// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
    if (env.IsDevelopment())
    {
        app.UseDeveloperExceptionPage();
    }
    else
    {
        app.UseExceptionHandler("/Home/Error");
    }
            
    app.UseMvc(routes =>
    {
        routes.MapRoute(
            name: "default",
            template: "{controller=Home}/{action=Index}/{id?}");
    });
}

其实app.UseDeveloperExceptionPage方法就是在告诉ASP.NET Core,当代码发生异常错误后,在浏览器上显示异常错误信息页,也就是我们在开发代码时,经常看到的异常错误信息页:

 

该异常错误信息页返回的HTTP状态码为500

但是我们可以看到app.UseDeveloperExceptionPage方法,是写在if (env.IsDevelopment())这个条件里面的,所以当只有在开发环境下,ASP.NET Core才会显示上面的异常错误信息页,而在其它环境下(例如ASP.NET Core项目发布后所处的生产环境),会执行app.UseExceptionHandler方法,该方法会传递一个URL地址,本例中我们传递的就是"/Home/Error":

app.UseExceptionHandler("/Home/Error");

也就是说在非开发环境下,ASP.NET Core项目中有代码发生异常后,ASP.NET Core会将"/Home/Error"这个URL地址的页面内容呈现到客户端浏览器上,而"/Home/Error"是一个自定义的MVC视图页面,你可以定义任何想显示的内容,在这里我们只显示一个错误提示"后台代码发生错误!",以下是视图文件"Error.cshtml"的内容:

@{
    Layout = null;
}

<!DOCTYPE html>

<html>
<head>
    <meta name="viewport" content="width=device-width" />
    <title>Error</title>
</head>
<body>
    <h1>后台代码发生错误!</h1>
</body>
</html>

注意当使用app.UseExceptionHandler方法,将用户HTTP请求转向"/Home/Error"这个URL地址后,在HomeController的Error方法中,HTTP请求的默认状态就已经变为500了:

当然这里,我们也可以在HomeController的Error方法中,通过Response.StatusCode属性将其改为其它状态码。

最终呈现在客户端浏览器上的页面,就是我们在前面定义的视图文件"Error.cshtml":

 

所以app.UseDeveloperExceptionPage和app.UseExceptionHandler两个方法,都是用来定义ASP.NET Core项目有代码发生异常后,给客户端浏览器显示什么页面的,只不过app.UseDeveloperExceptionPage方法用于开发环境,ASP.NET Core会自动生成一个异常显示页面,而app.UseExceptionHandler方法用于非开发环境,并且需要我们自己定义异常显示页面。

 

转载于:https://www.cnblogs.com/OpenCoder/p/11459985.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
`WebApplication.CreateBuilder` 方法实际上是创建一个`WebHostBuilder`实例,用于构建并配置 ASP.NET Core Web 应用程序的主机(host)。在 ASP.NET Core 应用程序,主机是一个负责启动应用程序并托管其所有服务的进程。`WebHostBuilder`用于配置主机和应用程序服务,包括依赖注入服务集合,间件管道等。 `WebHostBuilder`是一个通用的主机构建器,可以用于构建任何 ASP.NET Core Web 应用程序。在使用`WebApplication.CreateBuilder`方法时,我们可以使用`builder.Services`属性来配置应用程序的依赖注入服务集合。此外,我们还可以使用`builder.WebHost`属性来配置主机选项,例如Kestrel服务器、应用程序根目录、配置文件等。 以下是一个使用`WebApplication.CreateBuilder`方法的示例: ```csharp var builder = WebApplication.CreateBuilder(args); builder.Services.AddControllers(); builder.Services.AddSwaggerGen(); builder.Services.AddEndpointsApiExplorer(); var app = builder.Build(); app.UseRouting(); app.UseEndpoints(endpoints => { endpoints.MapControllers(); }); app.Run(); ``` 在上面的示例,我们首先使用`WebApplication.CreateBuilder`方法创建一个`WebHostBuilder`实例,并使用`builder.Services`属性配置应用程序的依赖注入服务集合。然后,我们使用`builder.Build()`方法构建应用程序的主机。在主机构建完成后,我们使用`app.UseRouting()`方法和`app.UseEndpoints()`方法配置应用程序的间件管道。最后,我们使用`app.Run()`方法启动应用程序的主机。 因此,`WebApplication.CreateBuilder`方法的主要作用是创建一个`WebHostBuilder`实例,以便我们可以使用它来构建和配置 ASP.NET Core Web 应用程序的主机。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值