В моей службе ASP.NET Core OData, когда мы делаем пакетный запрос и пытаемся получить доступ к HttpContext
за пределами контроллера, он равен нулю. В случае не пакетного запроса HttpContext
заполняется правильно.
Я использую IHttpContextAccessor
для получения httpContext
:
public static class AspnetcoreHttpContext
{
public static IHttpContextAccessor contextAccessor;
public static void SetContextAccessor(IHttpContextAccessor accessor)
{
contextAccessor = accessor;
}
/// <summary>
/// Gets the current HTTP Context. This may be null!!!
/// </summary>
public static HttpContext Current
{
get
{
return contextAccessor?.HttpContext;
}
}
}
При запуске я настроил пакет, как показано ниже;
app.UseODataBatching();
app.UseMvc(routeBuilder =>
{
var conventions = ODataRoutingConventions.CreateDefault();
ODataBatchHandler odataBatchHandler = new CustomODataBatchHandler();
ApiVersion version = new ApiVersion(1, 0);
string routeName = string.Format("odata-bypath{0}", version.MajorVersion.Value);
routeBuilder.MapVersionedODataRoute(routeName, "odata/v{version:apiVersion}",
EdmModel, version, new DefaultODataPathHandler(), conventions, batchHandler: odataBatchHandler);
});
Есть указатели? пожалуйста, предложите.