JQuery发布到MVC方法会话变量dissapear

JQuery发布到MVC方法会话变量dissapear,jquery,asp.net-mvc,session,post,Jquery,Asp.net Mvc,Session,Post,我正在编写一个ASP.NETMVC应用程序,使用Jquery将一些数据发布到我的用户会话中 用户首先访问我的站点页面,然后我有一个按钮,该按钮使用JQuery向MVC控制器方法执行post,以将一些数据存储到用户会话中 加载初始页面时,我使用会话工厂为用户创建会话对象。这个很好用。作为对我的页面的初始请求的一部分,我将一个名为JoinState的对象放入我的会话中——对于任何后续请求,该对象都必须就位 当用户单击页面上的按钮时,将执行JQuery post向JoinState对象添加数据。这将发

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

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

加载初始页面时,我使用会话工厂为用户创建会话对象。这个很好用。作为对我的页面的初始请求的一部分,我将一个名为JoinState的对象放入我的会话中——对于任何后续请求,该对象都必须就位

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

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

我就是搞不懂为什么会这样。到目前为止,我的计算结果如下:

  • 它只影响从我的网络外部访问站点的用户
  • 我的网络中的用户不受影响
  • url名称是动态dns名称-这会影响.net查看会话的方式吗
  • 我已经使用firebug调试POST请求,并且可以确认正在发送ASP.Net会话cookie
出于某种原因,在我的JQuery帖子中,我的原始会话未被识别


提前感谢。

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

您需要传回会话密钥或其他内容,以便加载它,然后添加到其中

所有这些都是我不知道的,完全没有经过测试


如果我错了,请告诉我,我将进行一些测试,可能会删除此答案,以免混淆问题。

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

好的,,,,,问题现在已解决

  • 与MVC无关
  • 与JQuery无关
  • 我没有完全理解asp.net中的会话状态
事实

  • 在本地Web开发服务器上工作
  • 应用程序移动到IIS并停止工作
调查结果

  • 正在使用InProc会话
  • IIS中已设置1以上的工作进程
每次请求发生时,它都会命中一个新的工作进程。因为会话存储在PROC中,或者存储在每个进程的内存中,所以每次请求获得一个新的WP时,它都会获得一个新会话

最后结论

  • 不要弄乱你不懂的IIS设置
工作进程现在设置为1-应用程序工作


睡觉时间到了-感谢所有回复的人。

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