【问题标题】:tracemode attribute is not allowed in App Config应用配置中不允许使用 tracemode 属性
【发布时间】:2014-11-14 16:21:32
【问题描述】:

我正在尝试使用 4.0 .Net Framework 跟踪用 C# 编写的 SOAP Web 服务。

学习本教程后:http://msdn.microsoft.com/en-us/library/ty48b824%28v=vs.110%29.aspx 我通过以下方式配置了我的 Web 服务客户端的应用程序配置:

<system.diagnostics>
<trace autoflush="true"/>
<sources>
  <source name="System.Net">
    <listeners>
      <add name="TraceFile"/>
    </listeners>
  </source>
  <source name="System.Net.Sockets">
    <listeners>
      <add name="TraceFile"/>
    </listeners>
  </source>
</sources>
<sharedListeners>
  <add name="TraceFile" type="System.Diagnostics.TextWriterTraceListener" initializeData="trace.log"/>
</sharedListeners>
<switches>
  <add name="System.Net" value="Verbose"/>
  <add name="System.Net.Sockets" value="Verbose"/>
</switches>

这可行,但是我不需要在跟踪日志中查看十六进制代码。我提到的教程说我需要将“tracemode”属性设置为“protocolonly”。但是,当我添加此属性时,Visual Studio 告诉我此属性无效。

我还是尝试运行该程序。但是,当我创建 Web 服务类的实例时,我得到一个“TypeInitializationException”。如果我删除了 tracemode 属性,客户端可以正常工作,但我仍然会在我的跟踪日志中获得十六进制代码。

【问题讨论】:

  • 仔细阅读后我发现:“可选字符串属性。设置为 includehex 以十六进制和文本格式显示协议跟踪。设置为 protocolonly 以仅显示文本。默认值为 includehex。此属性必须在 元素上设置,如示例中所示。如果在 元素下的元素上设置此属性,则会引发异常。"

标签: c# .net web-services soap


【解决方案1】:

如果您添加“tracemode”属性,VS 会说不允许,但日志文件现在包含完整的 XML 数据。

这是我的 app.config sn-p:

<system.diagnostics>
    <trace autoflush="true"/>
    <sources>
        <source name="System.Net" tracemode="protocolonly">

没有跟踪模式:

System.Net Verbose: 0 : [9992] Data from ConnectStream#56298650::Write
System.Net Verbose: 0 : [9992] 00000000 : 3C 73 3A 45 6E 76 65 6C-6F 70 65 20 78 6D 6C 6E : <s:Envelope xmln
System.Net Verbose: 0 : [9992] 00000010 : 73 3A 73 3D 22 68 74 74-70 3A 2F 2F 73 63 68 65 : s:s="http://sche
System.Net Verbose: 0 : [9992] 00000020 : 6D 61 73 2E 78 6D 6C 73-6F 61 70 2E 6F 72 67 2F : mas.xmlsoap.org/

使用跟踪模式:

System.Net Verbose: 0 : [7524] ConnectStream#57911184::Write()
System.Net Verbose: 0 : [7524] Data from ConnectStream#57911184::Write
System.Net Verbose: 0 : [7524] <<<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"><s:Body xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><GetCloseOutList xmlns="http://adsionline.com/ADSIShippingWS/"><shipperFriendlyName>GREENWOOD</shipperFriendlyName><carrierFriendlyName>FedEx Ground®</carrierFriendlyName></GetCloseOutList></s:Body></s:Envelope>>>
System.Net Verbose: 0 : [7524] Exiting ConnectStream#57911184::Write() 
System.Net Verbose: 0 : [7524] ConnectStream#57911184::Close()
System.Net Verbose: 0 : [7524] Exiting ConnectStream#57911184::Close() 

我不确定它为什么会抱怨并且仍然有效。但它有效,猜猜这是最重要的。

【讨论】:

    猜你喜欢
    • 2014-05-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-01
    • 2021-05-13
    • 1970-01-01
    • 2014-05-23
    相关资源
    最近更新 更多