我有BasePage.cs類正在被其他.cs文件使用,而不是System.Web.UI.Page(公共部分類頁面:BasePage)。使用BasePage打開和關閉SQL連接有多安全?
我正在使用它來打開和關閉SQL連接,以確保每個SQL連接都關閉。
代碼看起來像這樣
{
public class BasePage: System.Web.UI.Page
{
public SqlConnection globalConnection;
protected override void OnInit(EventArgs e)
{
globalConnection = new SqlConnection();
globalConnection.ConnectionString = ConfigurationManager.ConnectionStrings["kontemiConnectionString"].ToString();
globalConnection.Open();
}
protected override void OnUnload(EventArgs e)
{
if (globalConnection != null)
{
globalConnection.Close();
}
}
}
}
到目前爲止,它一直對我很好。這意味着每次連接打開時它也會關閉。或者至少我是這麼想的。
我的問題是這個解決方案是否是防彈的,並且在代碼執行過程中出現一些處理錯誤的情況下,每個連接都會關閉。在追蹤這段代碼時,如果我故意創建錯誤500,它總是進入OnUnload事件並關閉。
那麼,你認爲這個執行安全嗎? (要停止討論是否我不應該打開SQL當我真正需要的時候,答案是,它使用BasePage的每一頁也打開SQL連接。)
全球有必要嗎?你不能只用頁面的錯誤事件嗎? – 2010-09-02 16:33:36
我可以保留代碼的其餘部分嗎?這意味着我將全局定義SqlObject和ConnectionString?然後,只需撥打塊?或者我應該把連接字符串放入Global.asax,因爲它總是相同的,並且不需要使用everypage加載? – feronovak 2010-09-02 17:04:13
@Jace Rhea:你可以,但全球更安全。我一直在頁面的OnError沒有觸發的情況下,但全局錯誤處理程序發現異常。 @feronovak:當然不是。 「使用」塊用於創建,然後使用並最終處理實現「IDisposable」的對象。如果你不這樣使用它,根本沒有意義使用它。 – tdammers 2010-09-02 17:39:04