从过滤器/消息处理程序中获取AutoFac的注册服务

时间:2015-07-09 19:38:11

标签: c# asp.net-web-api asp.net-web-api2 autofac

这是在AuthorizationFilterAttribute类中完成的:

var service = actionContext.Request.GetDependencyScope().GetService(typeof(IOurService);

VS

var requstScope = actionContext.ControllerContext.Request.GetDependencyScope();
var service = (IOurService)requstScope.GetService(typeof(IOurService));

具体差异及其副作用是什么?

提示:actionContext.ControllerContext.Request vs actionContext.Request

1 个答案:

答案 0 :(得分:0)

如果您反编译HttpActionContext,您会看到Request属性的实现方式如下:

public HttpRequestMessage Request
{
    get
    {
        if (this._controllerContext == null)
        {
            return null;
        }
        return this._controllerContext.Request;
    }
}

因此,您的两个代码完全等效。