.net6中UseExceptionHandler使用builder.Services需要添加什么
时间: 2024-02-12 08:05:14 浏览: 26
在 .NET 6 中,使用 UseExceptionHandler 中间件也需要在 ConfigureServices 方法中添加服务。但是,与 .NET Core 不同的是,.NET 6 中默认启用了对 Web 应用程序的依赖注入支持,因此不需要通过 builder.Services 属性来添加服务。
示例代码如下:
```csharp
public void ConfigureServices(IServiceCollection services)
{
services.AddControllers();
services.AddSingleton<IEmailService, EmailService>();
services.AddLogging();
// other services
}
```
在上面的代码中,我们向依赖注入容器中添加了一个 IEmailService 的实例,以便在 UseExceptionHandler 中使用它来发送错误报告。同时,我们还使用 AddLogging 方法向容器中添加了 ILoggerFactory 的实例,以便记录日志。这些服务都可以在 UseExceptionHandler 中使用。
在 Configure 方法中,我们可以通过依赖注入来获取这些服务,如下所示:
```csharp
public void Configure(IApplicationBuilder app, IWebHostEnvironment env, ILoggerFactory loggerFactory, IConfiguration config, IEmailService emailService)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
else
{
app.UseExceptionHandler("/Home/Error");
}
loggerFactory.AddFile("logs/myapp-{Date}.txt");
// other middleware
app.UseRouting();
app.UseEndpoints(endpoints =>
{
endpoints.MapControllers();
});
}
```
在上面的代码中,我们使用依赖注入来获取 ILoggerFactory、IConfiguration 和 IEmailService 的实例,并在 UseExceptionHandler 中使用它们来记录日志和发送错误报告。同时,我们还使用了 app.UseRouting 和 app.UseEndpoints 方法来配置路由和终结点。