2010-02-15 32 views
0

我正在ASP.NET 2.0網站上工作。我遇到的問題是它查詢數據庫以獲取它在屏幕上顯示的信息,但數據庫偶爾會到達它有太多打開連接的地方。這會導致網站在數據庫錯誤之後拒絕任何人嘗試登錄。如何使用按鈕在網站中重置一個asp.net網站?

這是因爲許多用戶會登錄,做他們需要做的事情,但是當他們做其他事情時離開網站而不註銷。它會超時,但這種聯繫似乎仍然是開放的。然後,我們必須聯繫負責運行的服務器的負責人,讓他爲我們重新設置它。

我已經看過,並且在做出請求和查詢後,對數據庫的所有連接似乎都關閉了。所以,我想要做的就是添加一個按鈕,點擊後會重置網站,而不是每次都要打電話給負責服務器的人。然後,我們可以在需要時重置它。那麼,如何在網站內的其中一個頁面上使用按鈕重置ASP.NET 2.0網站?

非常感謝,

邁克

+0

你是否想重置IIS? – brian 2010-02-15 18:32:05

+1

離開網頁的用戶究竟如何與數據庫連接保持打開狀態相關?您提出的解決方案並不是一個好的方案 - 最好是試着瞭解真正的問題並尋求幫助。 – markt 2010-02-15 18:38:13

回答

6

對數據庫所做的所有連接似乎請求

這裏的問題是這個詞後要關閉「顯得」。例如,這個代碼「看起來」就像它會關閉連接,但在某些情況下,它不會:

var conn = new SqlConnection("MyConnection"); 
var cmd = new SqlCommand("query string here", conn); 

cmd.ExecuteNonQuery(); 
conn.Close(): 

我能聽到你說,「當然,它關閉連接君不見'conn.Close();'線?」問題是有些事情會阻止conn.Close()行執行。

相反,你需要做這樣的事情:

using (var conn = new SqlConnection("MyConnection")) 
using (var cmd = new SqlCommand("query string here", conn)) 
{ 
    cmd.ExecuteNonQuery(); 
} 

該代碼將總是關閉連接。

如果您確實非常重視「重置」應用程序,您可以嘗試撥打Environment.Exit(),但這又是一個壞主意。

4

我不認爲加入一個按鈕的網站重置是正確的選擇。

你應該仔細研究爲什麼連接沒有關閉。

如果您使用的是SqlConnections,然後將它們包裝在一個using語句中,這將在您完成後處置連接。

下面是一個例子:

using (SqlConnection connection = new SqlConnection(connectionString)) 
{ 
    connection.Open(); 
    // Do work here; connection closed on following line. 
} 
0

要回答您的實際問題,重置ASP.NET網站的最簡單方法是修改web.config,這將導致網站重新加載。

因此,如果我想實現一個按鈕,我所要做的就是在應用程序設置中設置一個無意義的值(可能是上次重置的日期時間),然後使用ConfigurationManager來保存更改。

MSDN參考:ConfigurationManager Class

+0

我認爲這一點是他不允許在網站上更改_anything_而不經過一個緩慢的正式流程來涉及系統管理員。他希望能夠跳過所有這些。我並不是說這是一個好主意,但這是我認爲他的追求。 – 2010-02-15 20:23:31

+0

我的解決方案非常完美,它可以讓您創建一個按鈕,按需讓您的網站重新啓動。 – 2010-02-16 01:37:42

+0

DV的WTF我的解決方案完全可以解決OP的問題,這與幾乎所有其他解決方案不同。 – 2010-02-16 16:58:01