В недавнем выпуске MvcMiniProfiler была добавлена поддержка WCF (версия 1.8 или выше).Этот процесс состоит из трех этапов:
Добавить ссылки
Сначала добавьте ссылки на MvcMiniprofiler и MvcMiniProfiler.WCF на уровне пользовательского интерфейса и на уровне WCF через nuget (или загрузите источник исоставить свой собственный).
Настройка хоста WCF
Во-вторых, в файле web.config хоста службы вы должны добавить минипрофиля в качестве поведения конечной точки.Все разделы конфигурации находятся в "configuration / system.serviceModel".
<endpointBehaviors>
<behavior name="miniProfilerBehavior">
<wcfMiniProfilerBehavior />
</behavior>
</endpointBehaviors>
Затем добавьте расширение поведения (обратите внимание, что номер версии должен соответствовать вашей версии MvcMiniProfiler.WCF):
<extensions>
<behaviorExtensions>
<add name="wcfMiniProfilerBehavior" type="MvcMiniProfiler.Wcf.WcfMiniProfilerBehavior, MvcMiniProfiler.Wcf, Version=1.8.0.0, Culture=neutral" />
</behaviorExtensions>
</extensions>
Затем настройте конечные точки для использования настроенного вами профилировщика:
<services>
<service behaviorConfiguration="BaseBehavior" name="BSI.Something">
<endpoint address="" behaviorConfiguration="miniProfilerBehavior" binding="basicHttpBinding" bindingConfiguration="http" contract="BSI.ISomething"/>
</service>
</services>
Зависит от ваших настроек, но мне пришлось добавить еще один параметр web.config для запуска всех управляемых модулей для всех запросов.Этот конфиг находится в корневом разделе «конфигурации»:
<system.webServer>
<modules runAllManagedModulesForAllRequests="true"/>
</system.webServer>
Настройка клиента WCF
Наконец, настройте клиент wcf для «включения» профилировщика mvc, выполнив то же самое выше.
Добавьте расширение:
<extensions>
<behaviorExtensions>
<add name="wcfMiniProfilerBehavior" type="MvcMiniProfiler.Wcf.WcfMiniProfilerBehavior, MvcMiniProfiler.Wcf, Version=1.8.0.0, Culture=neutral" />
</behaviorExtensions>
</extensions>
Добавьте поведение:
<behaviors>
<endpointBehaviors>
<behavior name="wcfMiniProfilerBehavior">
<wcfMiniProfilerBehavior />
</behavior>
</endpointBehaviors>
</behaviors>
Настройте конечные точки для использования этого поведения:
<client>
<endpoint address="http://something/Something.svc" behaviorConfiguration="wcfMiniProfilerBehavior"
binding="BasicHttpBinding" bindingConfiguration="BasicHttpBinding_HTTP"
contract="BSL.ISomething" name="BasicHttpBinding_ISomething" />
</client>
ИВы сделали!
Примечание: Как MvcMiniProfiler на самом деле работает над WCF?В основном поведение клиента устанавливает заголовок SOAP, который сообщает хосту wcf включить профилировщик.Он передает тот заголовок, по которому читается поведение конечной точки на стороне хоста WCF.Затем он включает профилировщик на хосте.Наконец, когда узел WCF отвечает клиенту, он добавляет все достоинства профилировщика в заголовок ответа SOAP, который, в свою очередь, читается клиентом WCF.Довольно гениально.