如何在Ajax调用后更新会话?

时间:2014-07-25 16:07:11

标签: c# asp.net ajax asp.net-mvc asp.net-mvc-4

我的应用程序向API控制器发出了很多请求。我遇到的问题是我的APIController无法访问当前会话(它不应该 - )。但由于在页面加载后通过javascript调用 - 我不知道如何告诉我的应用更新会话。

从ajax调用接收更新数据后,处理会话值更改的可接受方法是什么?

示例:

public static class SessionManager
{
    public static User CurrentUser
    {
        get
        {
            return (User)HttpContext.Current.Session["CurrentUser"];
        }
        set
        {
            HttpContext.Current.Session["CurrentUser"] = value;
        }
    }
}

public class SomeController : ApiController
{
    public HttpResponseMessage DeleteSomething(SomeModel model)
    {
        // Do work
    }
}

然后在视图中

$.ajax({
     type: 'DELETE',
     url: '{PATH TO API}',
     data: { the data },
     traditional: true,
     success: function (response) {
         // Now I need to update the user stored in the session
         // How do I do that?
     } else {
     }
});

1 个答案:

答案 0 :(得分:2)

你是对的。 Web API故意禁用会话,因为它是符合REST的API,而REST是无状态的。坦率地说,我无法通过Web API控制器更改MVC方面的会话值。

但是,你的AJAX没有来调用Web API,你可以轻松地创建一个响应AJAX请求的MVC控制器动作,而你当然可以从那里修改会话。我认为这真的是你唯一的选择。