Мой уровень обслуживания данных в моем API требовал информацию, относящуюся к запросу в httpcontext, я прочитал этот question, и они сказали, что я должен использовать ActionContext вместо HttpContext.Current(прекратите работу в MVC6).
Первый способ - установить данные внутри контроллера, переопределив этот метод:
public void OnActionExecuting(ActionExecutingContext context)
{
var routeData = context.RouteData;
var httpContext = context.HttpContext;
...
}
Или используя DI путем ввода в сервисный уровень
public MyService(IContextAccessor<ActionContext> contextAccessor)
{
_httpContext = contextAccessor.Value.HttpContext;
_routeData = contextAccessor.Value.RouteData;
}
но я не уверен, что обе строки кода, перечисленные ниже, являются правильным способом сделать DI
services.AddTransient<IContextAccessor<ActionContext>,ContextAccessor>();
services.AddTransient<IContextAccessor<ActionContext>>();
когда я это делаю, я получаю эту ошибку.
Невозможно разрешить службу для типа "Microsoft.AspNet.Mvc.ActionContext" при попытке активировать
Обновление веб-проект project.json
"DIMultiTenan.Infrastructure": "",
"DIMultiTenan.MongoImplementation": "",
"Microsoft.AspNet.Server.IIS": "1.0.0-beta3",
"Microsoft.AspNet.Mvc": "6.0.0-beta3",
"Microsoft.AspNet.StaticFiles": "1.0.0-beta3",
"Microsoft.AspNet.Server.WebListener": "1.0.0-beta3"