CORRECÇÃO: CallContext objetos são perdidos quando você cria um novo componente de serviço

Traduções deste artigo Traduções deste artigo
ID do artigo: 319177 - Exibir os produtos aos quais esse artigo se aplica.
Expandir tudo | Recolher tudo

Neste artigo

Sintomas

Se você definir CallContext objetos antes de criar uma instância de um componente de serviço em um aplicativo cliente, você poderá perder os objetos CallContext depois de criar a instância do objeto.

Causa

Esse problema ocorre se os objetos que você colocar em CallContext derivam de interface ILogicalThreadAffinative . Se você colocar esses objetos no CallContext (usando o método CallContext.SetData ) e, em seguida, criar uma instância de um objeto ServicedComponent , o método CallContext.GetData para esses objetos retorna null.

Resolução

Para resolver esse problema, obtenha o service pack mais recente para o Microsoft .NET Framework. Para obter informações adicionais, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:
318836INFO: Como obter o Service Pack mais recente do .NET Framework

SOLUÇÃO ALTERNATIVA

Para contornar este problema, use um dos seguintes métodos:
  • Se você só precisará usar CallContext itens localmente em seu aplicativo, não derive esses itens da ILogicalThreadAffinative .

    Observação : O sistema de remoting não passa esses objetos por AppDomains.
  • Se você deseja usar servidores de sistema de interação remota com objetos de ServicedComponent e se você deseja fluxo CallContext a eles, você deve criar uma instância dos objetos ServicedComponent antes de colocar esses itens em CallContext .

    Se você não pode controlar isso, você pode armazenar o conteúdo de CallContext antes que você cria uma instância de ServicedComponent e, em seguida, carregar o conteúdo de volta.
Observação : você não é possível tirar proveito do recurso CallContext em aplicativos de ServicedComponent . Microsoft não suporta o uso de CallContext de dentro de objetos de ServicedComponent .

Situação

A Microsoft confirmou que este é um problema nos produtos da Microsoft listados no começo deste artigo. Esse problema foi corrigido primeiro no Microsoft .NET Framework Service Pack 2 (SP2).

Mais Informações

Com o objeto CallContext , você pode enviar informações junto o canal do cliente para servidor ou vice-versa. CallContext fornece um conjunto de propriedades que são executados com o caminho de código de execução (cadeia de chamada).

Esse problema também ocorre com todos os cabeçalhos no objeto CallContext .

Etapas para reproduzir o problema

  1. Definir instâncias de uma classe para colocar no CallContext:
    [Serializable]
    public class CtxObject : ILogicalThreadAffinative
    {
    	public string CtxString;
    	public CtxObject(){CtxString = "Some String" ;}
    }
    					
  2. Colocar um desses objetos em um slot de dados CallContext e, em seguida, criar uma instância de um 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") ;  
    					

Propriedades

ID do artigo: 319177 - Última revisão: segunda-feira, 12 de fevereiro de 2007 - Revisão: 3.3
A informação contida neste artigo aplica-se a:
  • Bibliotecas de Classes do Microsoft .NET Framework 1.0
  • Microsoft Visual Studio .NET 2002 Professional Edition
  • Microsoft Enterprise Services (included with the .NET Framework) 1.0
Palavras-chave: 
kbmt kbvs2002sp1sweep kbbug kbfix kbnetframe100sp2fix kbremoting KB319177 KbMtpt
Tradução automática
IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine Translation ou MT), não tendo sido portanto traduzido ou revisto por pessoas. A Microsoft possui artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais, com o objetivo de oferecer em português a totalidade dos artigos existentes na base de dados de suporte. No entanto, a tradução automática não é sempre perfeita, podendo conter erros de vocabulário, sintaxe ou gramática. A Microsoft não é responsável por incoerências, erros ou prejuízos ocorridos em decorrência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza atualizações freqüentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 319177

Submeter comentários

 

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