2011-11-23 54 views
9

要調試我的ASP.NET應用程序,我創建了一個名爲MessageHandling.cs的類。在這一點上它是一個單例模式,但我希望它成爲每個請求的一個實例。每個HTTP請求的類的單個實例

我的mssqlDb類填充MessagesHandling類與消息,如'Db連接','數據插入'和類似的東西。在處理完apsx頁面的所有事件後,MessageHandling類別在Page_LoadComplete()事件中被createFile.apsx.cs讀取。所有的錯誤和消息都會顯示給用戶。

此時系統可以進行調試。現在的問題是MessageHandling在發送請求後沒有清空,並且第二個瀏覽器上也顯示錯誤而沒有做任何事情。我也希望能夠使用此係統向最終用戶顯示消息,例如:「已創建博客」。

我的問題的基本如下:
Class A創建Class B
Class C讀取Class B

的單不工作,因爲它不是每個用戶/會話/請求。所以我需要其他方法。

+0

你在哪裏首次實例化你的單身人士? –

+0

mssqlDb是第一個使用它的人。所以這是它啓動的地方。 – h3rj4n

回答

4

HttpContext.Current爲當前請求的HttpContext對象。它有一個Items財產,這是一個IDictionaryobjectobject。你可以將任何你喜歡的東西放在那裏,並且它會被綁定到當前的請求。

-1

你可以在你的單例的構造函數中檢查該對象是否存在於會話中?如果沒有,創建它,然後返回它?

private Singleton() 
{ 
    // do whatever 
} 

public Singleton GetMySingleton() 
{ 
    if(HttpContext.Current.Items["MyCustomSingleton"] == null) 
     HttpContext.Current.Items["MyCustomSingleton"] = new Singleton(); 
    // 

    return (Singleton)HttpContext.Current.Items["MyCustomSingleton"]; 
} 
+0

那段代碼會在每個會話中緩存,而不是每個請求。 – Bertvan

+0

你,我的壞。沒有看到那部分 – Miles

相關問題