Локализация необработанных исключений приложения

Я пытаюсь отображать сообщения об ошибках на языке локали, и для всех обработанных исключений моя команда использует файл ресурсов для отображения на местном языке, но есть ли способ перехватить промежуточное ПО для отображения необработанных исключений приложения на языке локали?

2 ответа

Стандартные исключения.NET локализованы, и язык сообщений будет зависеть от текущей культуры потоков. Таким образом, для того, чтобы заставить его работать, вам нужно реализовать RequestCultureMiddleware, который бы изменял язык в зависимости от ваших потребностей. Вот пример:

public class RequestCultureMiddleware
{
    private readonly RequestDelegate next;

    public RequestCultureMiddleware(RequestDelegate next)
    {
        this.next = next;
    }

    public async Task Invoke(HttpContext context)
    {
        // Get it from HTTP context as needed
        var language = "fr-FR";

        var culture = new System.Globalization.CultureInfo(language);
        System.Threading.Thread.CurrentThread.CurrentCulture = culture;
        await next(context);
    }
}

Зарегистрируйте это до MVC в Startup учебный класс:

app.UseMiddleware(typeof(RequestCultureMiddleware));
app.UseMvc();

Обратите внимание: отображение сообщения об исключении здесь не рассматривается.

В начале нашего приложения у нас есть строка кода, похожая на

    config.Services.Replace(typeof(IExceptionHandler), new UnhandledExceptionHandler());

и это, кажется, ловит ошибки.

У нас также есть универсальный маршрут в конце наших таблиц маршрутов, который выглядит как

        config.Routes.MapHttpRoute(
            name: "NotImplemented",
            routeTemplate: "{*data}",
            defaults: new { controller = "Error", action = "notimplemented", data = UrlParameter.Optional });

где мы называем один и тот же код. Вы можете проверить заголовок Accept-Language, чтобы сделать предположение, какую локаль может использовать ваш абонент. Повторно опубликуйте конкретный вопрос, если вам нужна помощь с этим аспектом.

Другие вопросы по тегам