C# 在WebAPI 2中使用会话
我已经了解到,在web api 2中使用enable session的有效方法如下:C# 在WebAPI 2中使用会话,c#,asp.net-web-api,C#,Asp.net Web Api,我已经了解到,在web api 2中使用enable session的有效方法如下: protected void Application_PostAuthorizeRequest() { System.Web.HttpContext.Current.SetSessionStateBehavior(System.Web.SessionState.SessionStateBehavior.ReadOnly); } 我还创建了一个类,该类继承自AuthorizationFilter
protected void Application_PostAuthorizeRequest()
{
System.Web.HttpContext.Current.SetSessionStateBehavior(System.Web.SessionState.SessionStateBehavior.ReadOnly);
}
我还创建了一个类,该类继承自AuthorizationFilterAttribute
,并重写OnAuthorization
方法
但从未调用此事件-我做错了什么?您可以尝试创建一个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>
AFAIK WebAPI2应该是无状态的,因此使用不同的授权方法。这是事实。。Web API应该是“RESTFUL”的,因此是无状态的。我知道http是无状态的。但这对我没什么帮助…你需要会话的用例是什么?就我个人而言,这是我在任何新的asp.net项目上关闭的第一件事——这是一个性能瓶颈,只会在需要时阻碍将来的扩展。谢谢MacB。我们目前有很多需要会话的web服务,由于使用了该属性,这些服务对会话具有读/写访问权限,这导致了会话状态阻塞。在WebAPI中,我相信可以授予对会话的只读访问权,这不会阻塞会话。其想法是迁移到web api以提高性能。