5

ヘルプリンクを使用して、構成を通じてユーザー名とパスワードのログ記録を解決しました

メッセージ ログのセキュリティに関する懸念 http://msdn.microsoft.com/en-us/library/ms730318.aspx

ただし、メッセージ本文は常に「...ストリーム...」です。

構成を通じてこれを解決する方法はありますか、それともプログラムで解決できますか?

SvcTraceViewer ツールで「リクエスト/レスポンスの詳細な SOAP xml」を表示したいだけです。


私はすでにメッセージ ヘッダーと本文の両方を見てきました。私の問題は >>> 本文が常に「... ストリーム ...」のようになっていることです。「... ストリーム ...」だけでなく、実際のコンテンツが必要です。


リクエストメッセージ

<MessageLogTraceRecord>
    <s:Envelope xmlns:s="http://www.w3.org/2003/05/soap-envelope">
    <s:Header>
    <Action s:mustUnderstand="1" xmlns="http://schemas.microsoft.com/ws/2005/05/addressing/none">http://www.onvif.org/ver10/device/wsdl/GetSystemDateAndTime</Action>
    <ActivityId CorrelationId="fcc87310-055d-452b-9c0d-ffe671585392" xmlns="http://schemas.microsoft.com/2004/09/ServiceModel/Diagnostics">4876b839-30d4-4351-abb8-4fa6bf53d7e1</ActivityId>
    <VsDebuggerCausalityData xmlns="http://schemas.microsoft.com/vstudio/diagnostics/servicemodelsink"></VsDebuggerCausalityData>
    <Security s:mustUnderstand="1" xmlns="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
    <UsernameToken>
    <Username>duwu891229</Username>
    <Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordDigest">1ax8Hp9OY1H+vw7+w0fv8BDps9M=</Password>
    <Nonce EncodingType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary">V5x7WKzZ4U2DdM9cxhVXuQEAAAAAAA==</Nonce>
    <Created xmlns="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">2013-06-26T05:50:06.006Z</Created>
    </UsernameToken>
    </Security>
    </s:Header>
    <s:Body xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <GetSystemDateAndTime xmlns="http://www.onvif.org/ver10/device/wsdl"></GetSystemDateAndTime>
    </s:Body>
    </s:Envelope>
    </MessageLogTraceRecord>

応答メッセージ (「env:Body」タグの問題)

<MessageLogTraceRecord>
    <HttpResponse xmlns="http://schemas.microsoft.com/2004/06/ServiceModel/Management/MessageTrace">
    <StatusCode>OK</StatusCode>
    <StatusDescription>OK</StatusDescription>
    <WebHeaders>
    <Date>Wed, 26 Jun 2013 13:50:06 GMT</Date>
    <Server>App-webs/</Server>
    <Connection>close</Connection>
    <Content-Length>2406</Content-Length>
    <Content-Type>application/soap+xml; charset=utf-8</Content-Type>
    </WebHeaders>
    </HttpResponse>
    <env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope" xmlns:soapenc="http://www.w3.org/2003/05/soap-encoding" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:tt="http://www.onvif.org/ver10/schema" xmlns:tds="http://www.onvif.org/ver10/device/wsdl" xmlns:trt="http://www.onvif.org/ver10/media/wsdl" xmlns:timg="http://www.onvif.org/ver20/imaging/wsdl" xmlns:tev="http://www.onvif.org/ver10/events/wsdl" xmlns:tptz="http://www.onvif.org/ver20/ptz/wsdl" xmlns:tan="http://www.onvif.org/ver20/analytics/wsdl" xmlns:tst="http://www.onvif.org/ver10/storage/wsdl" xmlns:ter="http://www.onvif.org/ver10/error" xmlns:dn="http://www.onvif.org/ver10/network/wsdl" xmlns:tns1="http://www.onvif.org/ver10/topics" xmlns:tmd="http://www.onvif.org/ver10/deviceIO/wsdl" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl" xmlns:wsoap12="http://schemas.xmlsoap.org/wsdl/soap12" xmlns:http="http://schemas.xmlsoap.org/wsdl/http" xmlns:d="http://schemas.xmlsoap.org/ws/2005/04/discovery" xmlns:wsadis="http://schemas.xmlsoap.org/ws/2004/08/addressing" xmlns:xop="http://www.w3.org/2004/08/xop/include" xmlns:wsnt="http://docs.oasis-open.org/wsn/b-2" xmlns:wsa="http://www.w3.org/2005/08/addressing" xmlns:wstop="http://docs.oasis-open.org/wsn/t-1" xmlns:wsrf-bf="http://docs.oasis-open.org/wsrf/bf-2" xmlns:wsntw="http://docs.oasis-open.org/wsn/bw-2" xmlns:wsrf-rw="http://docs.oasis-open.org/wsrf/rw-2" xmlns:wsaw="http://www.w3.org/2006/05/addressing/wsdl" xmlns:wsrf-r="http://docs.oasis-open.org/wsrf/r-2" xmlns:tnshik="http://www.hikvision.com/2011/event/topics">
    <env:Header></env:Header>
    <env:Body>... stream ...</env:Body>
    </env:Envelope>
    </MessageLogTraceRecord>

machine.config

<configuration>
    <system.serviceModel>

            <machineSettings enableLoggingKnownPii="true" />

    </system.serviceModel>

    </configuration>

app.config

<system.diagnostics>
    <sources>
      <source name="System.ServiceModel"
              switchValue="Information, ActivityTracing"
              propagateActivity="true">
        <listeners>
          <add name="xml"/>
        </listeners>
      </source>
      <source name="System.ServiceModel.MessageLogging"
              switchValue="Information, ActivityTracing"
              logKnownPii="true">
        <listeners>
          <add name="xml"/>
        </listeners>
      </source>
      <source name="myUserTraceSource"
              switchValue="All">
        <listeners>
          <add name="xml"/>
        </listeners>
      </source>
    </sources>

    <sharedListeners>
      <add name="xml"
           type="System.Diagnostics.XmlWriterTraceListener"
                 initializeData="log\wcf.svclog" />
    </sharedListeners>

    <trace autoflush="true" indentsize="2">
      <listeners>
        <!--<clear />-->
        <add type="System.Diagnostics.ConsoleTraceListener" name="console"/>
      </listeners>
    </trace>

  </system.diagnostics>


  <system.serviceModel>

    <diagnostics wmiProviderEnabled="true">
      <messageLogging logEntireMessage="true" logKnownPii="true" logMalformedMessages="true"
        logMessagesAtServiceLevel="true" logMessagesAtTransportLevel="true"
        maxMessagesToLog="3000" />
    </diagnostics>
  </system.serviceModel>
4

2 に答える 2

4

はい。デフォルトでは、WCF トレースはメッセージ全体をログに記録しません (soap ヘッダーのみ)

WCF トレースを構成するための多くのオプションがあります。

logEntireMessage : メッセージ全体 (メッセージのヘッダーと本文) をログに記録するかどうかを指定します。デフォルト値は false で、ヘッダーのみがログに記録されることを意味します。

maxMessagesToLog : ログに記録するメッセージの最大数を指定します。クォータに達すると、トレースが発行され、追加のメッセージはログに記録されません。デフォルト値は 10000 です。

maxSizeOfMessageToLog : ログに記録するメッセージの最大サイズをバイト単位で指定します。サイズ制限を超えるメッセージはログに記録されません。サービス レベルおよびトランスポート レベル メッセージのデフォルト値は 256K で、不正な形式のメッセージのデフォルト値は 4K です。

非常に基本的な構成は

<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>

編集 :

ストリーミングを使用していますか? ストリーミングされたメッセージでは、ヘッダーのみがログに記録されます。これは変更できません。本文のコンテンツを表示するには、ストリーミングを無効にするしかありません。

バインディング構成 (サービスとクライアント)のTransferModeプロパティをBufferedに変更します。

于 2013-06-26T07:24:02.420 に答える