У меня есть следующие оформленные на моем сервисе
<ExceptionShielding("MyExceptionPolicyName")>
когда возникает исключение сбоя, моя политика берет ошибку и регистрируется в порядке. Он принимает идентификатор обработкиInstance и записывает его вместе с ошибкой для справки. То, что я замечаю, - это Guid, возвращенный в ошибке "Error ID:", отличается от того, который был передан в обработчик instanceId.
Я также пытался украсить операцию так
<FaultContract(GetType(ValidationFault))>
но это дает те же результаты.
Что бы я хотел сделать, так это то, как захват, который "Идентификатор ошибки:" передается потребителю, поэтому я могу зарегистрировать его вместе с исключением. * Дополнительная информация: обработчик политики исключений является настраиваемым, который принимает исключение, и записывает в него различные свойства и данные в определенную схему журнала исключений.
Кто-нибудь знает, как это сделать?
UPDATE: за комментарий @Jay Patel, я добавил это в свою конфигурацию, чтобы включить трассировку
<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>
Затем я выполнил запрос на получение ответа на ошибку, защищенного экранированием исключений. Строка ответа на ошибку форматируется следующим образом: "Ошибка при использовании этой услуги. Дополнительную информацию можно получить у своего администратора. Идентификатор ошибки: {GUID}"
Затем я просмотрел журнал трассировки и не обнаружил никаких признаков GUID или этой строки.
Вот ссылка pastebin на tracelog для всех, кто хочет увидеть пример одного при использовании ExceptionShielding.
UPDATE2:
Снова, за комментарий @Jay Patel, добавил это. Я попытался использовать значение -1 и max int для maxMessageLog, чтобы гарантировать, что я получаю наибольший объем данных в этом журнале.
<diagnostics>
<messageLogging logEntireMessage="true" logMalformedMessages="true" logMessagesAtServiceLevel="true" logMessagesAtTransportLevel="true" maxMessagesToLog="2147483647" />
</diagnostics>
Журнал не помогает. Он содержит ничего о чем-либо, даже близком к моему вопросу.
Чтобы прояснить, если это неясно выше... Я хочу, чтобы иметь возможность захватить GUID после "Идентификатор ошибки:" в сообщении обратно клиенту, чтобы я мог его зарегистрировать с исключением, которое регистрируется с помощью обработчик исключений. Таким образом, клиенты могут связаться с "Администратором", как говорится в сообщении с идентификатором ошибки, и фактически смогут что-то найти.
Ниже приведена полная трассировка pastbin