2015-05-06 3 views
0

Я прочитал, что эффективный способ использования включить сессию в Web API 2, как так:использование сессии в Web Api 2

protected void Application_PostAuthorizeRequest() 
    { 
    System.Web.HttpContext.Current.SetSessionStateBehavior(System.Web.SessionState.SessionStateBehavior.ReadOnly); 
    } 

Я также создал класс, который наследует от AuthorizationFilterAttribute и переопределяет метод OnAuthorization ,

Но это событие никогда не называется - что я делаю неправильно?

+3

AFAIK Web ** API ** 2 должен быть без гражданства, следовательно, использовать другой подход к авторизации. – sed

+1

Это правда. Веб-API должен быть «RESTFUL» и поэтому без гражданства. – BenjaminPaul

+0

Я знаю, что http не имеет гражданства. На самом деле мне не очень помогает, хотя ... – DavidB

ответ

0

Вы могли бы попробовать создать HttpModule:

public class WebApiSessionModule : IHttpModule 
{ 
    protected virtual void OnPostAuthorizeRequest(object sender, EventArgs e) 
    { 
     HttpContext context = HttpContext.Current; 

     if (this.IsWebApiRequest(context)) 
     { 
      context.SetSessionStateBehavior(System.Web.SessionState.SessionStateBehavior.ReadOnly); 
     } 
    } 
} 

Вам нужно добавить к вашему web.config в

<system.web> 
    <httpModules>