ASP.NET Core 6: проблемы с HttpContext

Я написал следующий общедоступный метод:

 public IList<CookieType> GetAcceptedCookieTypes(HttpContext httpContext)
        {
            var result = new List<CookieType>();
            // accepted by default
            result.Add(CookieType.Essential);

            var cookie = httpContext.Request.Cookies["cc_cookie_accept"];
            if (cookie != null)
            {
                var arrVal = cookie.Split('.');
                if (arrVal != null && arrVal.Length > 1)
                {
                    var arrCheck = arrVal[1];
                    if (arrCheck.Length > 0 && arrCheck[0] == '1')
                    {
                        result.Add(CookieType.Statistical);
                    }
                }
            }
            return result;
        }

У меня есть несколько мест, где используется метод, но я продолжаю получать эту ошибку, так как мне пришлось добавить HttpContext httpContext:

Error CS7036 There is no argument given that corresponds to the required formal parameter 'httpContext' of 'GDPRScript.GetAcceptedCookieTypes(HttpContext)

Я пробовал потреблять это так:

var _httpContext = HttpContext httpContext;
types = GetAcceptedCookieTypes(_httpContext);

Но затем он выдает 3 ошибки в определении _httpContext (значение), которыми они являются: CS0103, CS0201, CS1002

  • Как я могу правильно это исправить?
var _httpContext = (HttpContext) httpContext;?
vernou 22.11.2022 10:40

@vernou, то он явно жалуется на то, что httpContext не существует в текущем контексте

Munchkin 22.11.2022 10:43

Где вы вызываете этот метод? Из производного ControllerBase?

vernou 22.11.2022 10:44

@vernou Я думаю, что вызываю это из пользовательского компонента, как я могу проверить/определить?

Munchkin 22.11.2022 11:04

В каком классе проблемный код?

vernou 22.11.2022 11:31

Может быть, этот другой вопрос может помочь: Доступ к текущему HttpContext в ASP.NET Core

vernou 22.11.2022 11:34

Сочетание предложенного вопроса и ответа ниже сделало решение, спасибо!

Munchkin 22.11.2022 11:52
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
7
74
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вам нужно передать HttpContext, который... ну, в вашем контексте. Поскольку вы не объяснили, каков ваш контекст вызова этого метода, вам нужно будет найти это самостоятельно:

https://learn.microsoft.com/en-us/aspnet/core/fundamentals/http-context?view=aspnetcore-6.0

В этой ссылке есть список того, как получить ваш HttpContext в зависимости от того, какую технологию вы используете. ASP.NET Core — это широкое поле технологий или способов вызова или вызова, и способ получения HttpContext немного различается в каждом из них.

Если вы не вызываете это напрямую в своем контроллере, это может быть вашим способом получить HttpContext через внедрение зависимостей в любой компонент.

Я расширил свой startup.cs следующим образом: services.AddControllers(); // TEST add HttpContext functionality globally services.AddHttpContextAccessor(); но, видимо, он по-прежнему выдает ту же ошибку...

Munchkin 22.11.2022 11:04

О, да, вы должны следовать инструкциям, всем им. Вы внедрили IHttpContextAccessor в свой класс и использовали injectedVariable.HttpContext?

nvoigt 22.11.2022 11:29

Творит чудеса! Спасибо!

Munchkin 22.11.2022 11:51

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