回發

2010-09-01 13 views
2

我一直在使用會話變量在我的asp.net應用程序傳遞的一個屬性被後失去了本屆會議:回發

[DefaultValue(true)] 
public bool IsModificationMode 
{ 
    get 
    { 
     return (bool)Session["ModificationMode"]; 
    } 
    set { Session["ModificationMode"] = value; } 
} 

在pageLoad的,我把它的值。

現在回發後,我失去了它的價值爲AA的NullReferenceException

+0

你可以顯示你的回發代碼在哪裏設置值?當您設置屬性IsModificationMode時,將顯示代碼 – Arthis 2010-09-01 11:18:17

+0

。 – RPM1984 2010-09-01 11:19:22

回答

3

我提高了@stacknewbee,因爲我同意他關於應用程序池自我回收的想法。作爲一個解決方案,試圖通過改變從InProc方式爲StateServer web.config中的條目從解耦W3wp.exe進程會話狀態:

<sessionState mode="StateServer" stateConnectionString="tcpip=127.0.0.1:42424" timeout="30"/> 

請記住,服務器服務ASP.Net狀態服務器必須啓動。

1

的問題可能是因爲, 1.您可能是某處清除會話中的代碼,或 2.您的應用程序池正在被回收使你失去你的會話信息。檢查你的代碼,檢查eventvwr是否有應用程序回收消息。

1

這是一個網絡農場,多個服務器?您可能需要會話的SQL持久性,以便跨越服務器。您的應用程序是否因任何原因在回發之間回收?內存中的會話狀態將會丟失。回發之間有多長時間?你的會話是否超時(我認爲它默認爲20分鐘)?你確定你確實設定了價值嗎?別笑 - 我已經做到了。

而且,你絕對確定你需要使用會話狀態嗎?觀看狀態的工作?

0

感謝您的回覆 這是進入[SessionState的],其中我在Web.config中錯過了它:

+0

2010-09-01 12:58:18

4
<modules runAllManagedModulesForAllRequests="true"> 
      <remove name="Session" /> 
      <add name="Session" type="System.Web.SessionState.SessionStateModule" /> 
      <remove name="ScriptModule" /> 

如果你做了上面的你還有沒有後喜歡你需要添加會話狀態模塊...

+0

歡迎來到StackOverflow Dom。你能提供一些更多的背景和解釋你的答案是什麼,以及它如何改進2年前發佈的其他答案。謝謝。 – Deanna 2012-10-10 11:55:30

+0

@Deanna,+1,在16秒內擊敗我。儘管我可能會添加「其他_accepted_答案」。 – 2012-10-10 11:57:58