Локализация необработанных исключений приложения - PullRequest
0 голосов
/ 28 августа 2018

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

Ответы [ 2 ]

0 голосов
/ 28 августа 2018

Стандартные исключения .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();

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

0 голосов
/ 28 августа 2018

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

    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, чтобы сделать предположение о том, какую локаль может использовать ваш абонент. Если вам нужна помощь с этим аспектом, повторите вопрос.

...