Как я могу включить вход WCF так, чтобы он записал в Базу данных?

Я хотел бы смочь зарегистрировать информацию о сообщении в базе данных, и я пытаюсь решить, как лучше всего сделать это. Действительно ли возможно настроить WCF регистрирующиеся механизмы для записи в базу данных вместо файла?Спасибо.

8
задан David 17 December 2009 в 19:15
поделиться

3 ответа

У вас должны быть две вещи:

  • правильная конфигурация для включения трассировки .NET
  • прослушиватель трассировки для захвата сообщений трассировки и сохранения их в базе данных

Для # 1 :
Сначала вам нужно включить трассировку в WCF - вам понадобится запись в , которая включает трассировку:

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

Затем вам нужно настроить трассировку .NET как таковую:

<system.diagnostics>
   <sources>
      <source name="System.ServiceModel" 
              switchValue="Information, ActivityTracing" 
              propagateActivity="true">
         <listeners>
            <add name="xml" />
         </listeners>
      </source>
      <source name="System.ServiceModel.MessageLogging">
         <listeners>
             <add name="xml" />
         </listeners>
      </source>
   </sources>
   <sharedListeners>
       <add name="xml" type="WcfTrace.Trace.WebTraceListener,WcfTrace.Trace" />
   </sharedListeners>
</system.diagnostics>

Здесь, вместо WebTraceListener или других предопределенных слушателей вы также можете подключить свой собственный прослушиватель трассировки, ориентированный на базу данных.

Для № 2:
Вы, конечно, можете - написать свой собственный SqlTraceListener - или вы можете использовать одно из многих готовых решений, например это здесь (загрузите код с Codeplex ).

9
ответ дан 5 December 2019 в 20:16
поделиться

Если вам не нужно все SOAP-сообщение, я бы предложил использовать log4net с индивидуальной реализацией IParameterInspector или IDispatchMessageInspector, потому что в этом случае вы можете писать в журнал только то, что вам нужно. В противном случае возьмите раствор marc_s.

0
ответ дан 5 December 2019 в 20:16
поделиться

Вы можете использовать Log4Net

-1
ответ дан 5 December 2019 в 20:16
поделиться
Другие вопросы по тегам:

Похожие вопросы: