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

重要:本文是以 Microsoft 機器翻譯軟體翻譯而成,而非使用人工翻譯而成。Microsoft 同時提供使用者人工翻譯及機器翻譯兩個版本的文章,讓使用者可以依其使用語言使用知識庫中的所有文章。但是,機器翻譯的文章可能不盡完美。這些文章中也可能出現拼字、語意或文法上的錯誤,就像外國人在使用本國語言時可能發生的錯誤。Microsoft 不為內容的翻譯錯誤或客戶對該內容的使用所產生的任何錯誤或損害負責。Microsoft也同時將不斷地就機器翻譯軟體進行更新。

按一下這裡查看此文章的英文版本: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 - 最後檢閱時間:01/17/2015 16:37:02 - 修訂: 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

  • kbnosurvey kbarchive kbmt kbvs2002sp1sweep kbbug kbfix kbnetframe100sp2fix kbremoting KB319177 KbMtzh
意見反應