我的MiniProfiler在我的ASP.NET MVC应用程序中设置和工作.我的控制器通过WCF拨打BLL,而BLL又与数据库进行通话.我想从WCF服务中查看分析,以及我从网络应用程序看到的现有分析.是否在所有服务调用中使MiniProfiler成为参数?
解决方法
在最近发布的MvcMiniProfiler中,他们添加了WCF支持(1.8或更高版本).这是一个三步的过程来实现这一点:
添加引用
首先通过nuget(或下载源代码并自己编译)在UI层和WCF层中添加MvcMiniprofiler和MvcMiniProfiler.WCF的引用.
安装WCF主机
第二,在服务主机的web.config中,您必须将miniprofiler添加为端点行为.所有配置部分都属于“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,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客户端读取.相当巧妙