2010-01-08 61 views
0

我正在写一个ASP.Net MVC应用程序使用Jquery发布一些数据到我的用户会话。JQuery发布到MVC方法会话变量消失

用户访问第一个我的网站的页面,然后我有一个按钮,它利用jQuery来的MVC控制器的方法来存储一些数据到用户会话的职务。

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

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

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

我只是不知道为什么会发生这种情况。到目前为止我所做的工作如下:

  • 它只影响从我的网络外部访问站点的用户。
  • 我网络内的用户不受影响。
  • url名称是一个动态DNS名称 - 这可能会影响.net看到会话的方式吗?
  • 我用firebug来调试POST请求,并且可以确认ASP.Net会话cookie正在发送。

出于某种原因,在我的JQuery发布我的原始会话无法识别。

在此先感谢。

回答

0

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

  • 无关,与MVC。
  • 与JQuery无关
  • 一切与我做不完全理解在asp.net中的会话状态。

事实......

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

发现......正在使用

  • InProc会话。
  • 上面的工作进程已在IIS中设置。

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

定论....

  • 不要乱用IIS设置,你不明白!

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

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

0

我不知道这个,但我认为jQuery的岗位就像调用Web服务,因此不会有你的对象的引用。

你需要传递回会话密钥或东西,所以你可以加载它,然后添加到它。

这一切都是我的头顶,完全没有经过测试。

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

+0

可能,但我有点认为它可能会复制一个标准形式的帖子。它似乎发送所有会话标识(例如cookie)。如果以后尝试将其更改为GET请求,看看是否有所作为。我唯一能想到的其他事情是POST URL被修改了,或者当它通过一个动态DNS运行时,它的修改导致ASP.Net找不到原始会话。 – Remotec 2010-01-08 11:08:50

0

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