【问题标题】:JQuery Post to MVC method session variables dissapearJQuery Post 到 MVC 方法会话变量消失
【发布时间】:2011-01-02 20:28:44
【问题描述】:

我正在编写一个 ASP.Net MVC 应用程序,使用 Jquery 将一些数据发布到我的用户会话。

第一个用户访问我网站的页面,然后我有一个按钮,该按钮使用 JQuery 向 MVC 控制器方法执行发布,以将一些数据存储到用户会话中。

当初始页面加载时,我使用会话工厂为我的用户创建一个会话对象。这工作正常。作为对我的页面的初始请求的一部分,我将一个名为 JoinState 的对象放入我的会话中 - 对于任何后续请求,它都必须存在。

当用户点击页面上的按钮时,会执行一个 JQuery post 来向 JoinState 对象添加数据。这将发布到一个 MVC 控制器方法,该方法访问已定义的会话并使用发布的数据更新 JoinState 对象。

但是,当帖子发生时,我的应用程序无法识别创建的初始会话。这会导致“对象未设置为实例......”(基本上是空引用异常),因为已经定义的 JoinState 对象现在不存在。

我只是无法弄清楚为什么会发生这种情况。到目前为止,我的工作如下:

  • 它只影响从我的网络外部访问该站点的用户。
  • 我网络中的用户不受影响。
  • url 名称是动态 dns 名称 - 这会影响 .net 如何查看会话吗?
  • 我已经使用 firebug 调试了 POST 请求,并且可以确认正在发送 ASP.Net 会话 cookie。

由于某种原因,在我的 JQuery 帖子中,我的原始会话未被识别。

提前致谢。

【问题讨论】:

    标签: jquery asp.net-mvc session post


    【解决方案1】:

    对此我不确定,但我认为 jQuery 帖子就像调用 Web 服务一样,因此不会引用您的对象。

    您需要传回会话密钥或其他东西,以便您可以加载它然后添加到它。

    这一切都在我的脑海中,完全未经测试。

    如果我错了,请告诉我,我会做一些测试,也许会删除这个答案,以免混淆问题。

    【讨论】:

    • 可能,但我觉得它可能会复制标准表单帖子。它似乎发送了所有会话标识(例如 cookie)。稍后我会尝试将其更改为 GET 请求,看看是否会有所不同。我能想到的唯一另一件事是 POST url 以某种方式被修改,或者当它通过动态 dns 运行时,它被修改导致 ASP.Net 找不到原始会话。
    【解决方案2】:

    如果 url 名称是动态的,当 url 名称更改时 ASP.Net 发出的会话 cookie 将无效,因此您将失去与现有会话的连接。 您可以为无 cookie 会话配置您的网站,但您必须检查是否需要手动附加会话密钥查询字符串变量。

    【讨论】:

      【解决方案3】:

      嗯,,,,,,问题现在解决了。

      • 与 MVC 无关。
      • 与 JQuery 无关
      • 与我有关的一切都没有完全理解 asp.net 中的会话状态。

      事实...

      • 在本地 Web 开发服务器上工作。
      • 应用程序移至 IIS 并停止工作。

      调查结果...

      • 正在使用 InProc 会话。
      • 1 以上的工作进程已在 IIS 中设置。

      每次发生请求时,都会触发一个新的工作进程。因为会话被存储在 InProc 或每个单独进程的内存中,所以每次请求获得一个新的 WP 时,它都会获得一个新的会话。

      最后的结论......

      • 不要乱用你不懂的 IIS 设置!!!

      工作进程现在设置回 1 - 应用程序正在工作。

      该睡觉了——感谢所有回复的人。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-02-23
        • 2012-09-02
        • 2012-10-18
        • 1970-01-01
        • 2013-10-25
        • 2012-07-23
        相关资源
        最近更新 更多