Delen via


Doorgifte van activiteits-id

Doorgifte vindt plaats wanneer tracering van ServiceModel-activiteiten is ingeschakeld (ServiceModel-doorgifte) of is uitgeschakeld (doorgifte van gebruikers-naar-gebruikersactiviteit).

ServiceModel-activiteitstracering is ingeschakeld

Als ServiceModel ActivityTracing is ingeschakeld, vindt doorgifte plaats tussen ProcessAction-activiteiten.

Server

Wanneer het propagateActivity kenmerk is ingesteld true op zowel de client als de server, is de id van de ProcessAction activiteit op de server identiek aan de id in de doorgegeven ActivityId berichtkop.

Wanneer er geen ActivityId header aanwezig is in het bericht (dat wil gezegd, propagateActivity=false op de client) of wanneer propagateActivity=false op de server, genereert de server een nieuwe activiteits-id.

Klant

Als de client synchroon één thread heeft, negeert de client alle instellingen van propagateActivity de client of server. In plaats daarvan wordt het antwoord verwerkt in de aanvraagactiviteit. Als de client asynchroon of synchroon multithreaded is, propagateActivity=true wordt in de client een activiteits-id-header weergegeven in het bericht dat door de server wordt verzonden, haalt de client de activiteits-id op uit het bericht en wordt deze overgedragen naar de activiteit Procesactie die de doorgegeven activiteits-id bevat. Anders draagt de client de activiteit Procesbericht over naar een nieuwe activiteit procesactie. Deze extra overdracht naar een nieuwe activiteit procesactie wordt uitgevoerd voor consistentie. Binnen deze activiteit haalt de client de activiteits-id van de BeginCall-activiteit op uit de lokale threadcontext, wanneer de thread wordt toegewezen voor de verwerking van antwoordberichten. Vervolgens wordt deze overgedragen naar de eerste activiteit procesactie.

Als de client dubbelzijdig is, fungeert de client als server bij het ontvangen van het bericht.

Doorgifte in foutberichten

Er is geen verschil in het verwerken van geldige en foutberichten. Als propagateActivity=truede activiteits-id die is toegevoegd aan de headers van het SOAP-foutbericht, identiek is aan de omgevingsactiviteit.

ServiceModel Activity Tracing is uitgeschakeld

Als ServiceModel ActivityTracing is uitgeschakeld, vindt doorgifte plaats tussen activiteiten van gebruikerscode rechtstreeks zonder ServiceModel-activiteiten te doorlopen. Een door de gebruiker gedefinieerde activiteits-id wordt ook doorgegeven via de berichtactiviteit-id-header.

Als propagateActivity=true en ActivityTracing=off voor een ServiceModel-traceringslister (ongeacht of tracering is ingeschakeld op ServiceModel), gebeurt het volgende op de client of server:

  • Bij een bewerkingsaanvraag of het verzenden van een antwoord wordt de activiteits-id in TLS uit de gebruikerscode doorgegeven totdat een bericht wordt gevormd. Er wordt ook een activiteits-id-header ingevoegd in het bericht voordat het wordt verzonden.

  • Bij het ontvangen van een aanvraag of het ontvangen van een antwoord wordt de activiteits-id opgehaald uit de berichtkop zodra het ontvangen berichtobject is gemaakt. De activiteits-id in TLS wordt doorgegeven zodra het bericht uit het bereik verdwijnt totdat de gebruikerscode is bereikt.

Deze acties garanderen dat gebruikerstraceringen worden weergegeven in dezelfde activiteit als doorgifte is ingeschakeld. Het biedt echter geen garantie voor ServiceModel-traceringen. ServiceModel-traceringen vinden alleen plaats in een gebruikerscodeactiviteit als de verwerking van deze traceringen wordt uitgevoerd op dezelfde thread waarin de activiteit van de gebruikerscode is ingesteld.

Over het algemeen kunnen ServiceModel-traceringen worden waargenomen op de volgende plaatsen:

  • Als Tracering van ServiceModel is uitgeschakeld, worden alle verzonden traceringen weergegeven in gebruikersactiviteiten. Als doorgifte is ingeschakeld op zowel de server als de client, bevinden deze traceringen zich in dezelfde activiteit.

  • Als Tracering van ServiceModel is ingeschakeld, maar ActivityTracing is uitgeschakeld, worden gebruikerstraceringen weergegeven in dezelfde activiteit als doorgifte aan beide uiteinden is ingeschakeld. ServiceModel-traceringen worden weergegeven in de standaardactiviteit 0000, tenzij ze voorkomen in dezelfde thread als de verwerking van de gebruikerscode waar de activiteit in eerste instantie is ingesteld.

  • Als zowel ServiceModel-tracering als ActivityTracing zijn ingeschakeld, worden gebruikerstraceringen weergegeven in door de gebruiker gedefinieerde activiteiten en worden ServiceModel-traceringen weergegeven in door ServiceModel gedefinieerde activiteiten. Doorgifte vindt plaats op ServiceModel-niveau.