C# Web Api 2会话

C# Web Api 2会话,c#,asp.net,session,asp.net-web-api,asp.net-web-api2,C#,Asp.net,Session,Asp.net Web Api,Asp.net Web Api2,在web api 2中,我无法从中获取会话数据。我已经确认cookie正在发送fiddler 我知道WebAPI2的最佳实践是无状态的,但由于项目的要求,现在必须是状态完整的 我尝试过这个链接。 使用上述解决方案,我在该函数上得到一个null异常 我还尝试通过修改路由中的requesthandler来复制在旧web api中执行此操作的方法,但这在web api 2中不可用 我目前在mvc5中设置了一些会话变量。这是可行的,会话保持不变,但在WebAPI2中,每当我尝试使用会话时,下面的值都是

在web api 2中,我无法从中获取会话数据。我已经确认cookie正在发送fiddler

我知道WebAPI2的最佳实践是无状态的,但由于项目的要求,现在必须是状态完整的

我尝试过这个链接。

使用上述解决方案,我在该函数上得到一个null异常

我还尝试通过修改路由中的requesthandler来复制在旧web api中执行此操作的方法,但这在web api 2中不可用

我目前在mvc5中设置了一些会话变量。这是可行的,会话保持不变,但在WebAPI2中,每当我尝试使用会话时,下面的值都是空的

HttpContext.Current.Session


如果PostAuthorizerRequest不起作用,请尽快转到global.asax,然后尝试BeginRequest。

您不仅需要确认cookie已发送;您需要确认它与MVC应用程序中使用的会话ID cookie相同。我打赌你有两个不同的会话ID。它们没有区别。我还验证了它们是同一个sessionID。@约翰我知道你所说的情况——我得到了不同的sessionID。为什么会这样?斯威特做了一件好事。这在使用Redis或其他东西的web场中的Windows Azure网站上有效吗?我不确定是否测试正确,但对我来说,在mvc控制器和api控制器中检索时sessionId是不同的,这对我来说毫无用处。我想他说的是@Dejo答案
HttpContext.Current.Session
protected void Application_PostAuthorizeRequest() 
{
    System.Web.HttpContext.Current.SetSessionStateBehavior(System.Web.SessionState.SessionStateBehavior.Required);
}