2010-01-08 65 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會話,但您必須檢查是否需要手動追加會話密鑰查詢字符串變量。