Ведение журнала веб-службы .Net

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

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

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

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

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


person Wes P    schedule 26.09.2008    source источник
comment
...в дополнение к решению Клауса мне также пришлось обновить разрешения для папки журнала, изменив их на Полный доступ.   -  person Artie Leech    schedule 18.05.2017


Ответы (1)


По возможности используйте 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>
person Claus Thomsen    schedule 26.09.2008
comment
Вы, вероятно, захотите использовать программу SvcTraceViewer для анализа вывода. (msdn.microsoft.com/en-us/library/ms732023.aspx #sectionSection1) - person Henrik Aasted Sørensen; 09.02.2011