Update: CallContext-Objekte gehen beim Erstellen einer neuen Serviced Component verloren

SPRACHE AUSWÄHLEN SPRACHE AUSWÄHLEN
Artikel-ID: 319177 - Produkte anzeigen, auf die sich dieser Artikel bezieht
Dieser Artikel wurde zuvor veröffentlicht unter D319177
Dieser Artikel ist eine Übersetzung des folgenden englischsprachigen Artikels der Microsoft Knowledge Base:
319177 FIX: CallContext Objects Are Lost When You Create a New Serviced Component
Hinweis: Die Verwendung der hier aufgeführten Informationen sowie Makro- oder Programmcodes geschieht auf Ihre eigene Verantwortung. Microsoft stellt Ihnen diese Informationen sowie Makro- und Programmlistings ohne Gewähr auf Richtigkeit, Vollständigkeit und/oder Funktionalität sowie ohne Anspruch auf Support zur Verfügung. Die zur Verfügung gestellten Makro- und Programmierungsbeispiele sollen lediglich exemplarisch die Funktionsweise des Beispiels aufzeigen.

Weitere Informationen zu den von Microsoft angebotenen Supportoptionen finden Sie unter folgender Internetadresse:
http://support.microsoft.com/
Alles erweitern | Alles schließen

Auf dieser Seite

Problembeschreibung

Wenn Sie CallContext-Objekte setzen, bevor Sie eine Serviced Component in einer Client-Applikation instantiiert haben, können CallContext-Objekte möglicherweise verloren gehen, nachdem die entsprechende Objektinstanz erstellt wurde.

Ursache

Dieses Problem tritt auf, wenn Objekte, die Sie in den CallContext platzieren, von der Schnittstelle ILogicalThreadAffinative ableiten. Wenn Sie diese Objekte (unter Verwendung der Methode CallContext.SetData) in CallContext platzieren und anschließend eine Instanz eines ServicedComponent-Objekts erstellen, gibt die Methode CallContext.GetData für diese Objekte Null zurück.

Lösung

Installieren Sie das aktuellste Service Pack für Microsoft .NET Framework, um dieses Problem zu beheben. Weitere Informationen finden Sie in folgendem Artikel der Microsoft Knowledge Base:
318836 INFO: How to Obtain the Latest .NET Framework Service Pack

Abhilfe

Wenden Sie eine der folgenden Methoden an, um dieses Problem zu umgehen:
  • Leiten Sie diese Objekte nicht von ILogicalThreadAffinative ab, falls Sie CallContext-Objekte ausschließlich lokal für Ihre Anwendung benötigen.

    Hinweis: Diese Objekte werden vom Remotesystem nicht über Anwendungsdomänen hinweg übergeben.
  • Falls Sie Remoteserver mit ServicedComponent-Objekten einsetzen möchten und diese ServicedComponents den CallContext nutzen sollen, müssen Sie Ihre ServicedComponent-Objekte instantiieren, bevor Sie diese Objekten im CallContext platzieren.

    Falls Sie dies nicht kontrollieren können, können Sie die CallContext-Inhalte speichern, bevor Sie eine Instanz Ihrer ServicedComponent erstellen. Laden Sie die Inhalte anschließend wieder in den CallContext zurück.
Hinweis: In ServicedComponent-Anwendungen können die Vorteile des Features CallContext nicht nutzen. Microsoft unterstützt die Nutzung von CallContext aus ServicedComponent-Objekten nicht.

Status

Microsoft hat bestätigt, dass es sich hierbei um ein Problem bei den in diesem Artikel genannten Microsoft-Produkten handelt. Dieses Problem wurde erstmals in Microsoft .NET Framework Service Pack 2 (SP2) korrigiert.

Weitere Informationen

Das Objekt CallContext ermöglicht Ihnen das Senden von Informationen vom Client zum Server oder umgekehrt. CallContext stellt unterschiedliche Eigenschaften zur Verfügung, die mit über den Codepfad (call chain) übermittelt werden.

Dieses Problem kann auch bei allen Headern des Objekts CallContext auftreten.

Schritte zum Reproduzieren des Problems

  1. Definieren Sie Instanzen einer Klasse, um diese in CallContext einzufügen:
    [Serializable]
    public class CtxObject : ILogicalThreadAffinative
    {
    	public string CtxString;
    	public CtxObject(){CtxString = "Some String" ;}
    }
  2. Setzen Sie eines dieser Objekte in einen Datenumsetzungsplatz von CallContext, erstellen Sie anschließend eine Instanz einer 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") ;  


Bitte beachten Sie: Bei diesem Artikel handelt es sich um eine Übersetzung aus dem Englischen. Es ist möglich, dass nachträgliche Änderungen bzw. Ergänzungen im englischen Originalartikel in dieser Übersetzung nicht berücksichtigt sind. Die in diesem Artikel enthaltenen Informationen basieren auf der/den englischsprachigen Produktversion(en). Die Richtigkeit dieser Informationen in Zusammenhang mit anderssprachigen Produktversionen wurde im Rahmen dieser Übersetzung nicht getestet. Microsoft stellt diese Informationen ohne Gewähr für Richtigkeit bzw. Funktionalität zur Verfügung und übernimmt auch keine Gewährleistung bezüglich der Vollständigkeit oder Richtigkeit der Übersetzung.

Eigenschaften

Artikel-ID: 319177 - Geändert am: Freitag, 19. März 2004 - Version: 3.0
Die Informationen in diesem Artikel beziehen sich auf:
  • Microsoft .NET Framework-Klassenbibliotheken 1.1
  • Microsoft Visual Studio .NET 2002 Professional Edition
  • Microsoft .NET Framework Service Pack 2
Keywords: 
kbbug kbfix kbremoting kbnetframe100sp2fix KB319177
Microsoft stellt Ihnen die in der Knowledge Base angebotenen Artikel und Informationen als Service-Leistung zur Verfügung. Microsoft übernimmt keinerlei Gewährleistung dafür, dass die angebotenen Artikel und Informationen auch in Ihrer Einsatzumgebung die erwünschten Ergebnisse erzielen. Die Entscheidung darüber, ob und in welcher Form Sie die angebotenen Artikel und Informationen nutzen, liegt daher allein bei Ihnen. Mit Ausnahme der gesetzlichen Haftung für Vorsatz ist jede Haftung von Microsoft im Zusammenhang mit Ihrer Nutzung dieser Artikel oder Informationen ausgeschlossen.

Ihr Feedback an uns

 

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