c# - 如何在 Ajax 调用后更新 session ?

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

我的应用程序向 API Controller 发出大量请求。我遇到的问题是我的 APIController 无权访问当前 session (这 - 它不应该)。但是由于调用是在页面加载后通过 javascript 进行的 - 我不知道如何告诉我的应用程序更新 session 。

在从 ajax 调用接收到更新数据后,处理 session 值更改的公认方法是什么?

例子:

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
    }
}

然后在 View 中

$.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 {
     }
});

最佳答案

你是对的。 Web API 有意禁用 session ,因为它是符合 REST 标准的 API,而 REST 是无状态的。坦率地说,据我所知,无法从 Web API Controller 更改 session 中 MVC 端的值。

但是,您的 AJAX 没有调用 Web API,您可以轻松地创建一个响应 AJAX 请求的 MVC Controller 操作,并且您> 当然可以从那里修改 session 。我认为这将是您唯一的选择。

关于c# - 如何在 Ajax 调用后更新 session ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24959967/

相关文章:

c# - SQL Server 2005 中 .NET 存储过程的默认参数值/可选参数

asp.net - 带有 LinqDataSource 和空选项的 DropDownList

php - 如何将这些字符串从 php 传递到 javascript

jquery.ajax 就绪状态 0,状态 0

javascript - 将表单数据发送到嵌套在 div 中的页面

c# - 在 .NET 中释放 COM 对象的 "ownership"

c# - C#中两个进程之间的同步。?

asp.net - Url 重写与路由

c# - 使用 sendgrid 收不到电子邮件,也没有错误消息

c# - 从值中减去可为 null 的十进制 null