FIX: CallContext 物件時將會遺失您建立新的服務的元件

文章翻譯 文章翻譯
文章編號: 319177 - 檢視此文章適用的產品。
全部展開 | 全部摺疊

在此頁中

徵狀

如果在用戶端應用程式中建立服務元件的執行個體之前,您可以設定 CallContext 物件,可能會失去 CallContext 物件之後建立的物件執行個體。

發生的原因

如果您在 CallContext 中放置的物件是衍生自 ILogicalThreadAffinative 介面,就會發生這個問題。如果您將這些物件放在 CallContext (利用 CallContext.SetData 方法),然後建立 ServicedComponent 物件的執行個體,CallContext.GetData 方法,這些物件就會傳回 null。

解決方案

如果要解決這個問題,取得 Microsoft.NET Framework 為最新的 Service Pack。如需詳細資訊按一下 [下面的文件編號,檢視 「 Microsoft 知識庫 」 中的發行項]:
318836資訊: 如何取得最新的.NET Framework Service Pack

因應措施

如果要解決這個問題而定,使用 [下列的其中一個方法]:
  • 如果您只需要在本機應用程式中使用 CallContext 項目,不衍生這些項目從 ILogicalThreadAffinative

    注意: AppDomain 跨遠端處理系統未通過這些物件。
  • 如果您想使用遠端處理伺服器與 ServicedComponent 物件,而且如果想流向 CallContext 您就必須建立 ServicedComponent 物件的執行個體,您將這些項目放置在 CallContext 之前。

    如果您不能控制這,您可以在您建立的執行個體 ServicedComponent 和內容回去再載入前儲存 CallContext 內容。
注意: 您不能要利用 CallContext 功能 ServicedComponent 應用程式中。Microsoft 不支援使用 CallContextServicedComponent 物件內。

狀況說明

Microsoft 已確認這是在本文開頭所列之 Microsoft 產品中的問題。 這個問題已經先獲得修正在 Microsoft.NET Framework Service Pack 2 (SP2)。

其他相關資訊

CallContext] 物件中,您可以傳送沿著通道的資訊從用戶端到伺服器,反之亦然。CallContext 提供一組的執行程式碼路徑 (呼叫鏈結) 一起執行的屬性。

CallContext 物件中的所有標頭也會發生這個問題。

重現問題的步驟

  1. 定義將放置在 [CallContext 類別的執行個體:
    [Serializable]
    public class CtxObject : ILogicalThreadAffinative
    {
    	public string CtxString;
    	public CtxObject(){CtxString = "Some String" ;}
    }
    					
  2. 將其中一個這些物件放在 CallContext 資料插槽,然後建立 ServicedComponent 的執行個體:
    // Create CallContext object.
    CtxObject CtxObj = new CtxObject () ;                     
    
    // Set it in the CallContext.
    CallContext.SetData ("CtxObject", CtxObj) ;
    
    // Create the serviced component.
    MyServicedComponent MyObj = new MyServicedComponent () ;  
    
    // Retrieve the CallContext object (returns null).
    CtxObject CtxObj1 = (CtxObject) CallContext.GetData ("CtxObject") ;  
    					

屬性

文章編號: 319177 - 上次校閱: 2007年2月12日 - 版次: 3.3
這篇文章中的資訊適用於:
  • Microsoft .NET Framework Class Libraries 1.0
  • Microsoft Visual Studio .NET 2002 Professional Edition
  • Microsoft Enterprise Services (included with the .NET Framework) 1.0
關鍵字:?
kbmt kbvs2002sp1sweep kbbug kbfix kbnetframe100sp2fix kbremoting KB319177 KbMtzh
機器翻譯
重要:本文是以 Microsoft 機器翻譯軟體翻譯而成,而非使用人工翻譯而成。Microsoft 同時提供使用者人工翻譯及機器翻譯兩個版本的文章,讓使用者可以依其使用語言使用知識庫中的所有文章。但是,機器翻譯的文章可能不盡完美。這些文章中也可能出現拼字、語意或文法上的錯誤,就像外國人在使用本國語言時可能發生的錯誤。Microsoft 不為內容的翻譯錯誤或客戶對該內容的使用所產生的任何錯誤或損害負責。Microsoft也同時將不斷地就機器翻譯軟體進行更新。
按一下這裡查看此文章的英文版本:319177
Microsoft及(或)其供應商不就任何在本伺服器上發表的文字資料及其相關圖表資訊的恰當性作任何承諾。所有文字資料及其相關圖表均以「現狀」供應,不負任何擔保責任。Microsoft及(或)其供應商謹此聲明,不負任何對與此資訊有關之擔保責任,包括關於適售性、適用於某一特定用途、權利或不侵權的明示或默示擔保責任。Microsoft及(或)其供應商無論如何不對因或與使用本伺服器上資訊或與資訊的實行有關而引起的契約、過失或其他侵權行為之訴訟中的特別的、間接的、衍生性的損害或任何因使用而喪失所導致的之損害、資料或利潤負任何責任。

提供意見

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com