行动前的Web Api调用方法

时间:2016-03-15 22:12:50

标签: asp.net-web-api asp.net-web-api2

我想在控制器中设置变量,所有操作的共同点。这是代码:

        int id = User.Identity.GetUserId<int>();
        user = controllerContext.Request.GetOwinContext().GetUserManager<ApplicationUserManager>().FindById(id);

所以,我只想在每个动作之前调用此代码。我该怎么做?我试着把它添加到

protected override void Initialize(HttpControllerContext controllerContext)
{
}

但是用户尚未填写Initialize方法。我该怎么做? 请不要创建ActionFilter,因为我不会为此控制器创建单元测试

1 个答案:

答案 0 :(得分:0)

User.Identity将填充OnAuthorization。控制器实例化的过程在授权之前发生。因此,唯一的方法是声明您的控制器属性并将其设置为OnAuthorization(例如通过ActionFilter,例如您上面所写的)。如果你想在控制器初始化的那一刻想要User.Identity,除了重写.NET MVC应用程序请求处理管道......