Gli FIX: CallContext oggetti non vengono inoltrati quando si crea un nuovo componente servito

Il presente articolo è stato tradotto tramite il software di traduzione automatica di Microsoft e non da una persona. Microsoft offre sia articoli tradotti da persone fisiche sia articoli tradotti automaticamente da un software, in modo da rendere disponibili tutti gli articoli presenti nella nostra Knowledge Base nella lingua madre dell’utente. Tuttavia, un articolo tradotto in modo automatico non è sempre perfetto. Potrebbe contenere errori di sintassi, di grammatica o di utilizzo dei vocaboli, più o meno allo stesso modo di come una persona straniera potrebbe commettere degli errori parlando una lingua che non è la sua. Microsoft non è responsabile di alcuna imprecisione, errore o danno cagionato da qualsiasi traduzione non corretta dei contenuti o dell’utilizzo degli stessi fatto dai propri clienti. Microsoft, inoltre, aggiorna frequentemente il software di traduzione automatica.

319177
Questo articolo è stato archiviato. L’articolo, quindi, viene offerto “così come è” e non verrà più aggiornato.
Sintomi
Se si imposta oggetti CallContext prima di creare un'istanza di un componente servito in un'applicazione client, si potrebbero perdere gli oggetti CallContext dopo aver creato l'istanza dell'oggetto.
Cause
Questo problema si verifica se gli oggetti che si inserisce nel CallContext derivano dall'interfaccia ILogicalThreadAffinative . Se si inseriscono tali oggetti nel CallContext (utilizzando il metodo CallContext.SetData ) e quindi creare un'istanza di un oggetto ServicedComponent , il metodo di CallContext.GetData per tali oggetti restituisce null.
Risoluzione
Per risolvere il problema, procurarsi l'ultimo Service Pack per Microsoft .NET Framework. Per ulteriori informazioni, fare clic sul numero dell'articolo della Microsoft Knowledge Base riportato di seguito riportato:
318836INFORMAZIONI: Come ottenere .NET Framework Service Pack più recente

PER RISOLVERE IL PROBLEMA

Per ovviare al problema, utilizzare uno dei metodi descritti di seguito:
  • Se si desidera utilizzare gli elementi CallContext localmente nell'applicazione non derivano questi elementi da ILogicalThreadAffinative .

    Nota : il sistema remoto non passa questi oggetti in domini applicazioni.
  • Se si desidera utilizzare i server remoti con oggetti ServicedComponent e se si desidera flusso CallContext a essi, è necessario creare un'istanza degli oggetti ServicedComponent prima di tali elementi nel CallContext .

    Se non è possibile controllare questo, è possibile memorizzare il contenuto del CallContext prima di creare un'istanza di carico quindi nuovamente il contenuto di ServicedComponent .
Nota : È impossibile sfruttare il CallContext funzionalità nelle applicazioni di ServicedComponent . Microsoft non supporta l'utilizzo di CallContext da all'interno di oggetti di ServicedComponent .
Status
Microsoft ha confermato che questo problema riguarda i prodotti Microsoft elencati all'inizio di questo articolo. Questo problema è stato corretto per la prima volta nel Service Pack 2 per Microsoft .NET Framework (SP2).
Informazioni
Con l'oggetto CallContext , è possibile inviare informazioni lungo il canale dal client al server o viceversa. CallContext fornisce un insieme di proprietà che sono eseguiti unitamente al percorso di codice l'esecuzione (catena di chiamate).

Questo problema si verifica anche con tutte le intestazioni nell'oggetto CallContext .

Procedura per riprodurre il problema

  1. Definire istanze di una classe da inserire nel CallContext:
    [Serializable]public class CtxObject : ILogicalThreadAffinative{	public string CtxString;	public CtxObject(){CtxString = "Some String" ;}}					
  2. Inserisce uno di questi oggetti in uno slot di dati CallContext e quindi creare un'istanza di un 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") ;  					
creare un'istanza

Avviso: questo articolo è stato tradotto automaticamente

Proprietà

ID articolo: 319177 - Ultima revisione: 01/17/2015 16:36:56 - Revisione: 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 KbMtit
Feedback