Почему я не могу отследить только ошибки на сервисной стороне моего WCF? - PullRequest
1 голос
/ 29 июля 2010

У меня есть служба wcf, которая иногда создает ошибки типа «Сообщение InnerException было« Максимальное количество элементов, которые могут быть сериализованы или десериализованы в графе объектов, равно «65536» ». Я знаю, как решить эту конкретную проблему, но теперь я хочу создать трассировку, которая сохраняет в журнале только ошибки (и критические ошибки).

Проблема в том, что мой журнал сохраняет либо все (включая успешные вызовы), либо ничего вообще. Итак, мой вопрос: что не так с моим web.config?

<system.diagnostics>
    <trace autoflush="true" />
    <sources>
        <source name="System.ServiceModel" propagateActivity="true" switchValue="Error">
            <listeners>
                <add name="xml">
                </add>
            </listeners>
        </source>
    </sources>
    <sharedListeners>
        <add initializeData="C:\mylog.svclog"
             type="System.Diagnostics.XmlWriterTraceListener"
             name="xml" />
    </sharedListeners>
</system.diagnostics>

Я пытался использовать все различные комбинации switchValue, но ни одна из них не дает мне желаемого результата (= ловить ошибки, но не успешные вызовы).

У кого-нибудь есть идея?

1 Ответ

1 голос
/ 29 июля 2010

Если вам нужна регистрация только на стороне обслуживания, вы можете проверить интерфейс IErrorHandler, который вы можете установить в своем классе обслуживания.

Этот интерфейс предоставит два метода

public bool HandleError(Exception error)

public void ProvideFault(Exception error, MessageVersion ver, ref Message msg)

, который позволит вам использовать все исключения, происходящие на стороне службы, - зарегистрируйте их в своем собственном файле журнала, и все будет в порядке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...