我的应用程序向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 {
}
});
答案 0 :(得分:2)
你是对的。 Web API故意禁用会话,因为它是符合REST的API,而REST是无状态的。坦率地说,我无法通过Web API控制器更改MVC方面的会话值。
但是,你的AJAX没有有来调用Web API,你可以轻松地创建一个响应AJAX请求的MVC控制器动作,而你会当然可以从那里修改会话。我认为这真的是你唯一的选择。