Mar*_*cus 4 c# asp.net-mvc asp.net-core
在MVC 5中,您可以使用HttpContext进行访问HttpContext.Current。访问当前HttpContext或更好的仅当前的首选方式是RouteContext什么?
RouteContext不是您通常要访问的对象。MVC使用它来通知路由是否已处理,因此不会流动。您可能想要访问RouteData。
这里是几种访问它的方法:
在控制器上,您可以访问- this.ActionContext.RouteData或HttpContext.Current等效项this.ActionContext.HttpContext或直接访问this.HttpContext
在中,ActionFilter您可以通过method参数访问它们:
public void OnActionExecuting(ActionExecutingContext context)
{
    var routeData = context.RouteData;
    var httpContext = context.HttpContext;
    ...
}
Run Code Online (Sandbox Code Playgroud)
您可以访问DI系统的任何其他地方(例如,服务的构造函数,或可以直接访问服务提供者的地方),都可以在当前请求处获得,ActionContext但请注意,仅当您在请求范围内时,此方法才有效而您传入的serviceprovider仅限于该请求。
public MyService(IScopedInstance<ActionContext> contextAccessor)
{
    _httpContext = contextAccessor.Value.HttpContext;
    _routeData = contextAccessor.Value.RouteData;
}
Run Code Online (Sandbox Code Playgroud)
注意:如果您只希望自己是一个简单的类,且具有获取/设置属性并注册为范围服务,则也可以编写自己的“访问器”。
|   归档时间:  |  
           
  |  
        
|   查看次数:  |  
           1880 次  |  
        
|   最近记录:  |