Установить значение configuration.GetSection (""). Значение из заголовка запроса - PullRequest
0 голосов
/ 16 июня 2020

Мне нужно установить в моей asp. net основной конфигурации значение из заголовка в каждом запросе. Делаю так:

public async Task Invoke(HttpContext context)
    {
        var companyId = context.Request.Headers["companyid"].ToString().ToUpper();
        configuration.GetSection("CompanyId").Value = companyId;

        await next(context);           
    }

Работает нормально. Но правильно ли это? В случае одновременного выполнения нескольких запросов есть ли риск испортить значения? Я поискал, но не нашел ответа.

Я использую. Net 3.1.

1 Ответ

0 голосов
/ 18 июня 2020

Насколько мне известно, значение appsetting. json - это значение глобальной настройки, вы не должны изменять глобальное состояние для каждого запроса, это действие не является потокобезопасным. В какой-то момент вы столкнетесь с рисом.

Если вы все еще хотите использовать эти коды, я предлагаю вам попробовать добавить блокировку. Примечание: это сделает ваш метод Invoke очень медленным.

Подробности, вы можете обратиться к кодам ниже:

    private static Object _factLock = new Object();

        lock (_factLock)
        {
            Configuration.GetSection("CompanyId").Value = "";

        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...