1
我想在我的web api非mvc应用程序中使用会话变量。Web api中会话状态变量的用法
我已经在我的控制器
public class AuthenticateController : ApiController
{
[Route("api/CheckLogin")]
public string AuthenticateUser(Models.Customer customer)
{
HttpContextBase context = null;
var httpContext = context as HttpContextBase;
httpContext.Session["username"] = "sa";
}
启用了global.aspx网页会话
protected void Application_PostAuthorizeRequest()
{
HttpContext.Current.SetSessionStateBehavior(SessionStateBehavior.Required);
}
,但现在我得到空裁判的错误。
我怎样才能做到这一点
请帮
让我直截了当地说:你创建一个名为'context'的变量,将它设置为'null',将该空值作为'HttpContextBase'强制转换,然后尝试使用它? 在某些时候,您必须将其设置为等于当前上下文,或者至少将其设置为某个非空值。即'context = HttpContext.Current;'。 – TheRotag
你不需要'HttpContextBase context = null;'行。你需要在使用它之前检查httpContext是否为非null。如果你试图转换的对象不是HttpContextBase类型,那么'as'可以返回null。之后,您需要检查用户名是否已在会话中正确设置。通过检查该值为null来调试它,从Session对象中检索。 – ManoDestra
我的确喜欢这个对象上下文; (Request.Properties.TryGetValue(“MS_HttpContext”,out context)) var httpContext = context as HttpContextBase;如果(httpContext!= null && httpContext.Session!= null) { httpContext.Session [“d”] =“sa”; } } – user2363957