Mam następujący urządzone na mojej służbieWCF ExceptionShielding Błąd Identyfikator nie zgadza się z handlingInstanceId przekazane Handler
<ExceptionShielding("MyExceptionPolicyName")>
gdy wyjątek Błąd jest generowany, moja polityka podnosi błąd i loguje się dobrze. Zajmuje identyfikator HandlingInstance Id i rejestruje go wraz z błędem dla odniesienia. Zauważam, że Guid zwrócony w błędzie "Error ID:" jest inny niż ten przekazany do obsługi instanceId.
Ja również próbował ozdobić operację jak tak
<FaultContract(GetType(ValidationFault))>
ale to daje te same rezultaty.
To, co chciałbym zrobić, to sposób, w jaki przechwycono ten "Error ID:" do konsumenta, aby móc go zarejestrować wraz z wyjątkiem. * informacje o dodatkach: procedura obsługi wyjątku jest niestandardowa, która pobiera wyjątek i rejestruje różne właściwości i dane w określonym schemacie db dziennika wyjątków.
Ktoś wie, jak to osiągnąć?
UPDATE: na komentarz @Jay Patel „s, dodałem to do mojego config, aby umożliwić śledzenie
<system.diagnostics>
<sources>
<source name="System.ServiceModel"
switchValue="Information, ActivityTracing"
propagateActivity="true">
<listeners>
<add name="traceListener"
type="System.Diagnostics.XmlWriterTraceListener"
initializeData= "c:\Temp\Traces.svclog" />
</listeners>
</source>
</sources>
</system.diagnostics>
Potem wykonał prośbę, aby uzyskać odpowiedź na uszkodzenia ekranowany przez ekranowanie wyjątków. Łańcuch odpowiedzi na błąd jest sformatowany w następujący sposób: "Wystąpił błąd podczas korzystania z tej usługi.Aby uzyskać więcej informacji, skontaktuj się z administratorem .. Identyfikator błędu: {GUID}"
Następnie przejrzałem dziennik śledzenia i nie znalazłem żadnych dowodów GUID lub tego łańcucha.
Oto link pastebin do traceloga dla każdego, kto dba o przykład takiego rozwiązania podczas korzystania z ExceptionShielding.
Update2:
Znowu na komentarz @Jay Patel, dodanych w tym. Wypróbowałem -1 i maksymalną wartość int dla maxMessageLog, aby upewnić się, że otrzymuję największą ilość danych w tym dzienniku.
<diagnostics>
<messageLogging logEntireMessage="true" logMalformedMessages="true" logMessagesAtServiceLevel="true" logMessagesAtTransportLevel="true" maxMessagesToLog="2147483647" />
</diagnostics>
Dziennik nie jest pomocny. Obejmuje ona nic o mnie o wszystkim, nawet blisko odpowiadając na moje pytanie.
Aby wyjaśnić w przypadku, gdy nie jest jasne, powyżej ... Chcę, aby móc uchwycić GUID po „ID błędu:” w wiadomości z powrotem do klienta, więc mogę zalogować się go z tą różnicą, że jest zalogowany przez procedurę obsługi wyjątku. W ten sposób klienci mogą skontaktować się z "Administratorem", jak mówi komunikat z identyfikatorem błędu, i faktycznie mogą znaleźć coś.
Oto pełna ślad włączony pastbin
Tak, już raz dałem nagrodę za tę. Jeśli ktoś przespaceruje się z odpowiedzią, zrobię, co w mojej mocy, aby oddać im 50-punktową nagrodę (nie jestem nawet pewien, czy możesz to zrobić, ale jeśli przyjdzie odpowiedź i mi się to podoba, Wrzucę nagrodę i nagrodzę tę osobę ... jeśli nie, nie, nie na stosie ... cóż ... dam ci wirtualną piątkę i powiem: dziękuję :) – wakurth
Nie to by pomogło wypróbowane logowanie przy użyciu funkcji śledzenia w [WCF Tracing] (http://msdn.microsoft.com/en-us/library/ms733025.aspx) Czy widzisz tutaj ten sam identyfikator błędu? –
Nie mam. Sprawdzę to. Firma, w której pracuję, ma kontakt w MS, do którego przesłałem to pytanie, i powiedziano mi, że przekaże ją zespołowi EntLib w MS i dostarczy mi odpowiedź. W międzyczasie wypróbuję śledzenie WCF i zobaczę, czy pomaga mi wskazać kierunek przechwytywania tej wartości po stronie serwera. dzięki. – wakurth