c# - .NET Core 2.1 Web API 中的多语言全局/自定义异常处理
问题描述
我目前正在我的.NET Core 2.1 Web API项目中添加一些中间件,以集成多语言支持和“尽可能”符合 REST/RFC的异常处理机制。
关于多语言,我从类中的内置IStringLocalizer<T>
类、本地化中间件和服务注册ConfigureServices
和Configure
方法开始Startup
,然后创建文化的特定 RESX 文件。
对于异常处理,我还使用了app.UseExceptionHandler()
内置的中间件,如下所示:
public static class ExceptionHandler
{
public static void UseGlobalExceptionHandler(this IApplicationBuilder app)
{
app.UseExceptionHandler(config =>
{
config.Run(async context =>
{
context.Response.StatusCode = (int)HttpStatusCode.InternalServerError;
context.Response.ContentType = "application/json";
var errorFeature = context.Features.Get<IExceptionHandlerFeature>();
if (errorFeature != null)
{
Exception ex = errorFeature.Error;
ErrorDetails errorDetails = new ErrorDetails
{
StatusCode = context.Response.StatusCode,
Message = ex.Message
};
Log.Error(ex, "Request error {ErrorDetails}", errorDetails);
await context.Response.WriteAsync(errorDetails.ToString());
}
});
});
}
}
现在我想让多语言支持和异常处理一起工作,自定义错误详细信息文本的语言。
这些内置 .NET Core 对象是否有最佳实践或“标准”众所周知的方法?
还有一些附带问题:
- 我实际上并没有真正理解内置全局异常处理和创建自定义异常中间件的可能性之间的区别(好处)是什么。
- 关于异常处理的 RFC 合规性,我把这篇文章红了。我应该使用内置的
ProblemDetails
.NET Core 对象还是也可以使用我的ErrorDetails
类?
解决方案
推荐阅读
- rust - Rust 将包含通用特征的单个特征框起来
- android - 如何动态地将依赖项添加到buildscript?
- python - While 循环作为与完成的作业数相关的成绩计算器
- python - excel中值范围的相关性
- spring - 如何在 Spring 自定义条件类中获取现有的 bean 引用
- python - 抓取数据并与以 HTML 呈现的网页进行交互
- r - 根据组的总和值添加百分比列
- python - 不使用 API 的 Python Twitter Scraper
- c# - 在容器中列出一百万个 blob 名称的最佳方法?
- angular - 在 Angular 2 中使用单点登录(后端已经使用 webseal 完成)