CORRECÇÃO: CallContext perdem-se objectos quando cria um novo componente de serviço

Traduções de Artigos Traduções de Artigos
Artigo: 319177 - Ver produtos para os quais este artigo se aplica.
Expandir tudo | Reduzir tudo

Nesta página

Sintomas

Se definiu CallContext objectos antes de criar uma instância de um componente do serviço numa aplicação cliente, poderá perder os objectos CallContext depois de criar a instância do objeto.

Causa

Este problema ocorre se os objectos que colocar CallContext deriva interface ILogicalThreadAffinative . Se colocar estes objectos no CallContext (utilizando o método CallContext.SetData ) e, em seguida, criar uma instância de um objecto de ServicedComponent , o método CallContext.GetData para esses objectos devolve um valor nulo.

Resolução

Para resolver este problema, obtenha o service pack mais recente do Microsoft .NET Framework. Para obter informações adicionais, clique no número de artigo que se segue para visualizar o artigo na Microsoft Knowledge Base:
318836INFO: How to Obtain the Latest .NET Framework Service Pack

SOLUÇÃO

Para contornar este problema, utilize um dos seguintes métodos:
  • Se apenas necessitar de utilizar CallContext itens localmente na sua aplicação, não deriva estes itens ILogicalThreadAffinative .

    Nota : O sistema remoto não passa estes objectos entre AppDomains.
  • Se pretender utilizar servidores de sistema de interacção remota com objectos de ServicedComponent e se pretende fluxo CallContext aos mesmos, tem de criar uma instância de objectos de ServicedComponent antes de colocar os produtos em CallContext .

    Se não o controlo, pode armazenar o conteúdo do CallContext antes de criar uma instância do seu ServicedComponent e, em seguida, carregar o conteúdo novamente.
Nota : É não é possível tirar partido de funcionalidade CallContext em aplicações de ServicedComponent . Microsoft não suporta a utilização de CallContext de dentro de objectos de ServicedComponent .

Ponto Da Situação

A Microsoft confirmou que este é um problema nos produtos da Microsoft listados no início deste artigo. Este problema foi primeiro corrigido no Microsoft .NET Framework Service Pack 2 (SP2).

Mais Informação

Com o objecto CallContext , pode enviar informações ao longo do canal de cliente para servidor ou vice-versa. CallContext fornece um conjunto de propriedades que são executadas juntamente com o caminho de código de execução (cadeia de chamada).

Este problema também ocorre com todos os cabeçalhos no objecto CallContext .

Passos para reproduzir o problema

  1. Definir instâncias de uma classe para colocar o CallContext:
    [Serializable]
    public class CtxObject : ILogicalThreadAffinative
    {
    	public string CtxString;
    	public CtxObject(){CtxString = "Some String" ;}
    }
    					
  2. Coloque um destes objectos num intervalo 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

Artigo: 319177 - Última revisão: 12 de fevereiro de 2007 - Revisão: 3.3
A informação contida neste artigo aplica-se a:
  • Bibliotecas de classe 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 revisto ou traduzido por humanos. A Microsoft tem artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais. O objectivo é simples: oferecer em Português a totalidade dos artigos existentes na base de dados do suporte. Sabemos no entanto que a tradução automática não é sempre perfeita. Esta pode conter erros de vocabulário, sintaxe ou gramática? erros semelhantes aos que um estrangeiro realiza ao falar em Português. A Microsoft não é responsável por incoerências, erros ou estragos realizados na sequência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza actualizações frequentes 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