Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Po włączeniu śledzenia działań programu Windows Communication Foundation (WCF) identyfikatory działania kompleksowego są przypisywane do działań logicznych w całym stosie WCF. W .NET Framework 4.6.1 istnieje teraz wyższa wersja wydajności tej funkcji, która współpracuje z śledzeniem zdarzeń dla systemu Windows (ETW) nazywanym śledzeniem przepływu komunikatów. Po włączeniu identyfikatory działań end-to-end są pobierane z (lub przypisane do , jeśli puste) komunikaty przychodzące i są propagowane do wszystkich zdarzeń śledzenia, które są emitowane po dekodacji komunikatu przez kanał. Klienci mogą używać tej funkcji do odtworzenia przepływów komunikatów z dziennikami śledzenia z różnych usług po dekodowaniu.
Śledzenie można włączyć po wykryciu problemu z aplikacją, a następnie wyłączone po rozwiązaniu problemu.
Włączenie debugowania
Śledzenie przepływu komunikatów można włączyć, ustawiając element konfiguracji .NET Framework 4 messageFlowTracing na true, jak pokazano w poniższym przykładzie.
<system.servicemodel>
<diagnostics>
<endToEndTracing propagateActivity="true" messageFlowTracing="true" />
</diagnostics>
</system.servicemodel>
Uwaga
endToEndTracing Ponieważ element konfiguracji znajduje się w pliku Web.config, nie można go dynamicznie skonfigurować w taki sam sposób jak ETW.
endToEndTracing Aby element konfiguracji został w życie, aplikacja musi zostać odzyskana.
Działania są skorelowane przez wymianę identyfikatora o nazwie identyfikator działania. Ten identyfikator jest identyfikatorem GUID i jest generowany przez klasę System.Diagnostics.CorrelationManager. Jeśli manipulujesz elementem System.Diagnostics.Trace.CorrelationManager.ActivityID, upewnij się, że wartość jest ustawiona na oryginalną podczas przenoszenia kontrolki wykonywania z powrotem do kodu WCF. Ponadto, jeśli używasz asynchronicznego modelu programowania WCF, upewnij się, że element System.Diagnostics.Trace.CorrelationManager.ActivityID jest przenoszony między wątkami.
Śledzenie przepływu komunikatów i usługi REST
Śledzenie przepływu komunikatów umożliwia śledzenie końca żądania. W przypadku usług opartych na protokole SOAP identyfikator działania jest wysyłany w nagłówku komunikatu SOAP. Żądania REST nie zawierają tego nagłówka, więc jest używany specjalny nagłówek zdarzenia HTTP. Poniższy fragment kodu pokazuje, jak programowo pobrać wartość identyfikatora działania:
Object output = null;
if (OperationContext.Current.IncomingMessageProperties.TryGetValue(HttpRequestMessageProperty.Name, out output))
{
HttpRequestMessageProperty httpHeaders = output as HttpRequestMessageProperty;
// Retrieve the Activity Id from the HTTP header string e2eId = httpHeaders.Headers["E2EActivity"];
// ...
}
Nagłówek można dodać programowo przy użyciu następującego kodu:
HttpContent content = new StreamContent(contentStream);
Guid correlation = Guid.NewGuid();
content.Headers.Add("E2EActivity", Convert.ToBase64String(correlation.ToByteArray()));