В настоящее время я добавляю некоторые промежуточные программы в мой .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?
Также некоторые побочные вопросы:
- На самом деле я не совсем понял, в чем разница (преимущества) между встроенным глобальным исключениемобработка и возможность создания пользовательского промежуточного программного обеспечения Exception.
- О соответствии RFC по обработке исключений, я выделил эту статью .Должен ли я использовать встроенный
ProblemDetails
.NET Core объект или я тоже могу использовать свой класс ErrorDetails
?