Я написал следующий общедоступный метод:
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
@vernou, то он явно жалуется на то, что httpContext не существует в текущем контексте
Где вы вызываете этот метод? Из производного ControllerBase?
@vernou Я думаю, что вызываю это из пользовательского компонента, как я могу проверить/определить?
В каком классе проблемный код?
Может быть, этот другой вопрос может помочь: Доступ к текущему HttpContext в ASP.NET Core
Сочетание предложенного вопроса и ответа ниже сделало решение, спасибо!





Вам нужно передать 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(); но, видимо, он по-прежнему выдает ту же ошибку...
О, да, вы должны следовать инструкциям, всем им. Вы внедрили IHttpContextAccessor в свой класс и использовали injectedVariable.HttpContext?
Творит чудеса! Спасибо!
var _httpContext = (HttpContext) httpContext;?