.Net Web Service Logging - PullRequest
       13

.Net Web Service Logging

7 голосов
/ 27 сентября 2008

Моя идеальная ситуация для входа в наш веб-сервис - регистрировать все вызовы методов (аутентификация и доступ к данным) с передаваемыми им параметрами, а также с ошибками, которые могли произойти, и связывать их с одним Идентификатор, который связывает их с тем же вызовом. Кроме того, в идеале я хотел бы иметь возможность контролировать, регистрируются ли все параметры или регистрируется только вызов метода. Я хотел бы иметь возможность контролировать, все ли входы в систему зарегистрированы или только неудачные. Опять же, вся информация, полученная в одном запросе, будет связана вместе через идентификатор (guid или иным образом).

Это моя идеальная ситуация с регистрацией. Если кто-нибудь знает, как реализовать все это, и был бы готов переехать в Манчестер, район NH ...;)

А если серьезно, кто-нибудь знает, как мне связать полученный запрос веб-сервиса с ошибкой или вызовом метода? Мои первые попытки включают в себя возиться с расширением Soap, пытаться добавить заголовок (soap или html) и что не передать произвольное значение из расширения в сам сервис. Все мои попытки не увенчались успехом.

Наша текущая ситуация с журналированием имеет регистрацию аутентификации в одной таблице, вызовы метода / бизнеса в другую таблицу и регистрацию исключений в другой таблице без какого-либо соединения между ними. Метки времени полезны, иногда, но недостаточно надежны для эффективной отладки. В настоящее время мы находимся на .Net 2.0 с потенциалом использования 3.5 к концу года, поэтому было бы более полезно, если бы ответы были сохранены с функциональностью 2.0.

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

1 Ответ

11 голосов
/ 27 сентября 2008

Используйте wcf, если возможно, и ведите протоколирование сообщений, см. http://msdn.microsoft.com/en-us/library/ms730064.aspx

<system.diagnostics>
  <sources>
      <source name="System.ServiceModel.MessageLogging">
        <listeners>
                 <add name="messages"
                 type="System.Diagnostics.XmlWriterTraceListener"
                 initializeData="c:\logs\messages.svclog" />
          </listeners>
      </source>
    </sources>
</system.diagnostics>

<system.serviceModel>
  <diagnostics>
    <messageLogging 
         logEntireMessage="true" 
         logMalformedMessages="false"
         logMessagesAtServiceLevel="true" 
         logMessagesAtTransportLevel="false"
         maxMessagesToLog="3000"
         maxSizeOfMessageToLog="2000"/>
  </diagnostics>
</system.serviceModel>
...