Я пытаюсь включить трассировку сообщений WCF для одной службы (одна из нескольких включена в это приложение IIS).Я создал файл web.config, который находится в том же физическом каталоге, что и мой файл .svc.Я могу настроить службу из этого файла web.config, изменить поведение, конечные точки и т. Д. Однако, когда я пытаюсь включить узел include 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 для элемента section , означает, что он может быть определен как «Везде», который должен включать физические подкаталоги.Я не смог найти ни одного определения system.diagnostics ни в одном из родительских web.configs.
Кто-нибудь знает, почему эта конфигурация system.diagnostics может не обрабатываться?