每次访问WebAPI的入口点

时间:2017-04-12 15:55:50

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

我想识别每次请求进入webAPI中的控制器之前被击中的一个点。我需要在那时进行自定义身份验证。我已经在做一个customAuthorization但是我想在一些自定义身份验证中调整它甚至在它到达控制器之前。

application_Start方法只触发一次,因此我不太确定每次我们在浏览器中输入URL并按Enter键时控件的位置是什么。

2 个答案:

答案 0 :(得分:4)

Gloabal.asax有更多方法,可以重载,其中一个是Application_BeginRequest

here's更详细的生命周期。控制器工厂也可以帮助您拦截和发送请求。

protected void Application_BeginRequest(object sender, EventArgs e) //Not triggered with PUT
{
    //your code
}

答案 1 :(得分:1)

您可以选择{API}的OnActionExecuting。每次进入的请求都会触发此操作。

执行管道:

  

控制器构造函数> ActionFilter的OnActionExecuted>控制器动作> ActionFilter的ActionFilterAttribute

简单public class YourFilterName : ActionFilterAttribute { public override void OnActionExecuting(HttpActionContext actionContext) { // pre-processing //Your authentication logic goes here - use actionContext } public override void OnActionExecuted(HttpActionExecutedContext actionExecutedContext) { var objectContent = actionExecutedContext.Response.Content as ObjectContent; if (objectContent != null) { var type = objectContent.ObjectType; //type of the returned object var value = objectContent.Value; //holding the returned value } Debug.WriteLine("OnActionExecuted Response " + actionExecutedContext.Response.StatusCode.ToString()); } } 实施:

website/
    apps/
        app1/
            forms.py
            models.py
            tasks.py
            urls.py
            views.py
        app2/
            forms.py
            models.py
            tasks.py
            urls.py
            views.py
        __init__.py
    settings/
        base.py <- contains base settings
        celery.py
        local.py <- contains dev/prod settings, imports all settings from base.py
__init__.py
urls.py
wsgi.py