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

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.

319177
Este artigo foi arquivado. Este artigo é oferecido "tal como está" e deixará de ser actualizado.
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") ;  					
criar uma instância

Aviso: Este artigo foi traduzido automaticamente

Propriedades

ID do Artigo: 319177 - Última Revisão: 01/17/2015 16:36:58 - Revisão: 3.3

  • 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
  • kbnosurvey kbarchive kbmt kbvs2002sp1sweep kbbug kbfix kbnetframe100sp2fix kbremoting KB319177 KbMtpt
Esta informação foi útil?