2014-10-01 47 views
1

我有一個使用ADO.net進行數據庫調用的Webforms頁面。當用戶離開頁面一段時間後,然後嘗試保存,對數據庫的調用失敗。他必須刷新才能工作。會話超時後數據庫調用失敗

我的問題:在.NET Webforms中,是否有某種會導致數據庫調用失敗的會話超時?是否有需要在web.config中設置的超時屬性?或者它可能是一個IIS的東西?

+1

您是否打開和關閉每個數據庫操作的連接? – 2014-10-01 21:32:45

+0

你確實需要展示你的代碼。您每次打電話到該數據庫時最有可能沒有打開/關閉數據庫連接。如果你在會話狀態下存儲數據庫連接信息,那麼你做錯了。 – NotMe 2016-07-21 21:09:52

回答

1

會話通常會在默認20分鐘後過期,因此對會話的任何引用都將返回空值。如果你在訪問這些值之前沒有檢查null,你會得到空引用異常。

如果您的表單的按鈕點擊事件沒有訪問Session對象中的任何內容,那麼您應該沒有問題。

0

在沒有看到任何代碼的情況下給你一個很好的答案有點困難。但我會盡力給你一些提示:

1)當會話超時,很明顯,應用程序將無法訪問該會話用戶存儲的值,因此,如果您正在使用用戶會話存儲數據庫連接,連接字符串或類似的東西,是的,數據庫連接將受到影響。

2)會話和身份驗證是不同的事情,有不同的處理,例如,你可以讓其中一個過期而另一個活動,你的代碼需要照顧這兩種情況。

3)是的,你可以通過改變web.config中的以下設置增加會話超時,但儘量不要存儲與在會話數據庫連接東西,最好是避免使用它們,但如果你需要嘗試將小而簡單的信息放入其中。

<configuration> 
    <system.web> 
    <sessionState mode="StateServer" timeout="30" /> 
    </system.web> 
</configuration>