【发布时间】:2011-10-24 03:31:22
【问题描述】:
我正在尝试为单个服务(此 IIS 应用程序中包含的几个服务之一)启用 WCF 消息跟踪。我创建了一个 web.config 文件,该文件与我的 .svc 文件位于同一物理目录中。我可以从此 web.config 文件配置服务,修改行为、端点等。但是,当我尝试包含包含 system.diagnostics 节点时,它似乎没有任何效果。这不会产生跟踪文件:
<?xml version="1.0"?>
<configuration>
<system.serviceModel>
<services>
<service name="My.Awesome.Wcf.Service" />
<!-- my endpoints and behaviors are defined programmatically -->
</services>
<diagnostics>
<messageLogging
logEntireMessage="true"
logMalformedMessages="true"
logMessagesAtServiceLevel="true"
logMessagesAtTransportLevel="true"
maxMessagesToLog="3000" />
</diagnostics>
</system.serviceModel>
<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="System.Diagnostics.XmlWriterTraceListener"
initializeData="C:\logs\Traces.svclog" />
</sharedListeners>
<trace autoflush="true" />
</system.diagnostics>
</configuration>
如果我将整个 system.diagnostics 节点从这个子目录 web.config 移到应用程序的根 web.config 中,它就会神奇地开始工作。据我所知,system.diagnostics 部分不限于应用程序的根 web.config,因为我的 machine.config 显示了此部分定义:
<section name="system.diagnostics" type="System.Diagnostics.SystemDiagnosticsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
请注意,此定义不包含“allowDefinition”属性,根据此MSDN documentation for the section element,这意味着它可以定义为“Everywhere”,其中应包含物理子目录。我也无法在任何父 web.configs 中找到任何 system.diagnostics 定义。
有谁知道为什么这个 system.diagnostics 配置可能没有得到处理?
【问题讨论】:
标签: .net wcf iis web-config system.diagnostics