织梦网站列表,做网站设计赚不赚钱,网站域名的组成,现在进入东莞需要什么条件说点题外话#xff0c;我们在玩asp.net的时候#xff0c;都知道有一个叼毛玩意叫做“生命周期”#xff0c;我们可以用httpmodule在先于页面的page_load中 做一些拦截#xff0c;这样做的好处有很多#xff0c;比如记录日志#xff0c;参数过滤#xff0c;全局登录验证等… 说点题外话我们在玩asp.net的时候都知道有一个叼毛玩意叫做“生命周期”我们可以用httpmodule在先于页面的page_load中 做一些拦截这样做的好处有很多比如记录日志参数过滤全局登录验证等等。。。在wcf里面的话也是有类似的功能第一种就是在 endpoint中加上runtime的behavior这样的话就可以先于“服务方法”做拦截第二种方法呢也就是我们这一篇所说的全程监控俗称 ”诊断功能”。 一诊断 我也说了“诊断”这是wcf的一个专业术语意思也就是监控wcf的所有动向如果往下说的话可以分为监控 wcf的message 和 wcf 本身的服务状态信息和端对端的流转消息。 1. 端对端的流转消息 在玩wcf之前不知道有多少人熟悉Diagnostics对的它就是.net自带的日志类当然在这个年代记录日志的组件有很多比如 log4netNlog等等。。。不过话说回来Diagnostics这个叼毛用起来还比较另类它由“跟踪源” 和 “监听器”组成。分别就是TraceSource 来指定跟踪源用TraceListener来指定跟踪源的监听器所以理所当然TraceSource的所有踪迹都会被TraceListener监听到下面我们 看看怎么玩。 ?xml version1.0 encodingutf-8?
configurationsystem.diagnosticssourcessource nameSystem.ServiceModel switchValueActivityTracinglistenersadd namemylisteners typeSystem.Diagnostics.XmlWriterTraceListener initializeDataE:\1.txt //listeners/source/sourcestrace autoflushtrue//system.diagnosticssystem.serviceModelbehaviorsserviceBehaviorsbehaviorserviceMetadata httpGetEnabledtrue /serviceDebug includeExceptionDetailInFaultsfalse //behavior/serviceBehaviors/behaviorsservicesservice nameMyService.HomeServiceendpoint addressHomeService bindingwsHttpBindingcontractMyService.IHomeServiceidentitydns valuelocalhost //identity/endpointendpoint addressmex bindingmexHttpBinding contractIMetadataExchange /hostbaseAddressesadd baseAddresshttp://192.168.1.107:1920 //baseAddresses/host/service/services/system.serviceModel/configuration 从上面的配置中可以看到你有没有发现我在配置system.diagnostics的时候和wcf一点关系都没有我并没有在system.ServiceModel 下对diagnostics有一丁点的配置对吧这说明什么说明“踪迹跟踪”功能和wcf一点关系都没有但却可以完整的记录wcf的踪迹信息然 后我稍微解释下listeners节点在这里我配置了一个XmlWriterTraceListener的监听器然后把输出文件的路径配置在initializeData属性下 其实都是diagnostics本身的知识范畴和wcf一点关系都没有好了下面我开启下程序看看到底都追踪到什么 有没有看到当我的服务启动之后追踪信息就全部来了。。。但是接下来有一个问题来了这个很杂乱的xml该怎么看才能最舒舒服服的 呢不用着急啦wcf同样给我们提供了一个叫做SvcTraceView的工具专门就是用来查找这个“踪迹信息”的工具的路径在 C:\Program Files (x86)\Microsoft SDKs\Windows\v8.0A\bin\NETFX 4.0 Tools 下面的事情就是打开它附加一下1.txt文件就好了如下图 从左边的“活动图”中大概可以看到HomeService这个服务启动到运行经历了一些什么样的悲惨故事。。。有兴趣的话大家可以自己动 手试试啦。 2. 监控input和ouput的message 如果要监控message的话我们需要再定义一个TraceSource 和 TraceListener即可不过这次监听的是System.ServiceModel. MessageLogging跟踪源然后在System.ServiceModel下面配置一下message的参数如下 ?xml version1.0 encodingutf-8?
configurationsystem.diagnosticssourcessource nameSystem.ServiceModel switchValueActivityTracinglistenersadd namemylisteners typeSystem.Diagnostics.XmlWriterTraceListener initializeDataE:\1.txt //listeners/sourcesource nameSystem.ServiceModel.MessageLogging switchValueActivityTracinglistenersadd namemessagelogging typeSystem.Diagnostics.XmlWriterTraceListener initializeDataE:\2.txt//listeners/source/sourcestrace autoflushtrue//system.diagnosticssystem.serviceModeldiagnosticsmessageLogging logEntireMessagetrue logMalformedMessagestrue logMessagesAtTransportLeveltrue //diagnosticsbehaviorsserviceBehaviorsbehaviorserviceMetadata httpGetEnabledtrue /serviceDebug includeExceptionDetailInFaultsfalse //behavior/serviceBehaviors/behaviorsservicesservice nameMyService.HomeServiceendpoint addressHomeService bindingbasicHttpBindingcontractMyService.IHomeServiceidentitydns valuelocalhost //identity/endpointendpoint addressmex bindingmexHttpBinding contractIMetadataExchange /hostbaseAddressesadd baseAddresshttp://192.168.1.107:1920 //baseAddresses/host/service/services/system.serviceModel/configuration 这次我准备来跑一下客户端调用Server端的Update方法看看能抓到啥样的Messsage。 现在我迫不及待的想用SvcTraceView打开下2.txt看看都拿到了什么追踪信息。。。 好了这篇我也只是引路式的介绍下SvcTraceView具体更深入的玩法大家可以琢磨琢磨对了如果大家想对Source和Listener的 一些参数需要进一步了解可以参考下SvcConfigEditor比如下面这样一目了然你懂的。。。