(WCF初体验)WCF服务器诊断-阿里云开发者社区

开发者社区> rstaryan> 正文

(WCF初体验)WCF服务器诊断

简介:       WCF服务器搭建好之后,不管是客户端访问还是本地调试,出个问题抛出来的原因往往在我们看来都是不知所以然的,更可能是跑出来的问题和真正的问题差了很远,比如“通信对象 System.ServiceModel.ServiceHost 无法用于通信,因为其处于“出错”状态。
+关注继续查看

      WCF服务器搭建好之后,不管是客户端访问还是本地调试,出个问题抛出来的原因往往在我们看来都是不知所以然的,更可能是跑出来的问题和真正的问题差了很远,比如“通信对象 System.ServiceModel.ServiceHost 无法用于通信,因为其处于“出错”状态。”这种错误就会有各种各样的原因所以这时候就必须用到WCF服务器的诊断功能了。

     而要实现服务器的诊断功能,我们一般就是用服务器跟踪器来生成日志文件,然后查看日志文件来根据我们调用服务时,服务器所出现的问题。 要开启这项功能需要配置WCF服务器,如下面代码所示,主要包括诊断的定义和开启诊断。

<span style="font-size:18px;"><span style="font-family:KaiTi_GB2312;font-size:12px;"><system.diagnostics>
        <sources>
            <source name="System.ServiceModel.MessageLogging" switchValue="Warning,ActivityTracing">
                <listeners>
                    <add type="System.Diagnostics.DefaultTraceListener" name="Default">
                        <filter type="" />
                    </add>
                    <add name="ServiceModelMessageLoggingListener">
                        <filter type="" />
                    </add>
                </listeners>
            </source>
            <source propagateActivity="true" name="System.ServiceModel" switchValue="Warning,ActivityTracing">
                <listeners>
                    <add type="System.Diagnostics.DefaultTraceListener" name="Default">
                        <filter type="" />
                    </add>
                    <add name="ServiceModelTraceListener">
                        <filter type="" />
                    </add>
                </listeners>
            </source>
        </sources>
        <sharedListeners>
            <add initializeData="D:\WCFLog\web_messages.svclog" type="System.Diagnostics.XmlWriterTraceListener, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
                name="ServiceModelMessageLoggingListener" traceOutputOptions="Timestamp">
                <filter type="" />
            </add>
            <add initializeData="D:\WCFLog\web_tracelog.svclog" type="System.Diagnostics.XmlWriterTraceListener, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
                name="ServiceModelTraceListener" traceOutputOptions="Timestamp">
                <filter type="" />
            </add>
        </sharedListeners>
        <trace autoflush="false" />
    </system.diagnostics></span></span>
<span style="font-size:18px;"><span style="font-family:KaiTi_GB2312;font-size:12px;"> <diagnostics>
      <messageLogging logMalformedMessages="true" logMessagesAtServiceLevel="true"
        logMessagesAtTransportLevel="true" />
    </diagnostics></span></span>

 对于初学者我建议的是用WCF编辑器来自己配置而不是直接复制配置文件的代码。右键你的config文件 选择“编辑WCF配置”


如图,把消息日志和跟踪都选择启动



然后就是配置侦听器的InitData,也是就日志文件保存的地方。(这里注意一下,如果你通过直接改配置来修改这个地址,请保证地址上的文件夹要存在),把两个侦听器的InitData都配置好。



最后保存在启动服务,当访问服务的时候就会在你指定的位置生成web_messages.svclog 和web_tracelog.svclog两个文件,用TraceView打开web_tracelog.svclog,详细列出了你所有访问的打开,操作和结束。当然会有高亮的颜色显示警告和错误,点击这条记录会在右边显示详细信息和提示信息。这样就可以看到导致异常的真正原因。



注: 当用WCF编辑器配置诊断的时候,可能他会生成如下的代码,请将中文的警告改成Warning。

<span style="font-size:18px;"><span style="font-family:KaiTi_GB2312;font-size:12px;"> <sources>
            <source name="System.ServiceModel.MessageLogging" switchValue="警告,ActivityTracing"></span></span>


版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
阿里云服务器怎么设置密码?怎么停机?怎么重启服务器?
如果在创建实例时没有设置密码,或者密码丢失,您可以在控制台上重新设置实例的登录密码。本文仅描述如何在 ECS 管理控制台上修改实例登录密码。
9494 0
【新功能】新增实例健康诊断进一步提升自服务能力
随着用户量骤增,阿里云ecs控制台提供几乎接近完美自助修复的能力。自助完成ECS实例连接和访问等常见问题的诊断和修复建议,提高问题解决效率,进而提升用户体验与粘性,大大简化了实例的操作性和维护成本。
2423 0
玩转ECS第3讲 | ECS自助服务之智能诊断和自动化修复
自助服务水平的高低是云厂商的核心竞争力,阿里云经过过去几年的积累,已经有了非常高效的自助服务能力。今天就将这些能力透露给最终用户。本次分享由阿里云高级技术专家滕圣波(云普)为大家介绍ECS自助服务之智能诊断与智能修复,解密背后的AI与实现细节,剧透ECS自助服务的未来。
3636 0
微信无法连接到服务器怎么诊断网络【微信高级教程3】
  有时我们出门在外难免会出现网络信号不好的时候,微信会提示“无法连接到服务器”,可能还会弹出一个“诊断网络”的按钮窗口。要是没弹出怎么弄呢?其实微信早就藏着这个彩蛋了,我们没挖掘到而已。   在微信任意聊天窗口输入 //traceroute 并发送,还可以调出“诊断网络”功能。
1543 0
阿里云服务器如何登录?阿里云服务器的三种登录方法
购买阿里云ECS云服务器后如何登录?场景不同,阿里云优惠总结大概有三种登录方式: 登录到ECS云服务器控制台 在ECS云服务器控制台用户可以更改密码、更换系.
13177 0
阿里云ECS云服务器初始化设置教程方法
阿里云ECS云服务器初始化是指将云服务器系统恢复到最初状态的过程,阿里云的服务器初始化是通过更换系统盘来实现的,是免费的,阿里云百科网分享服务器初始化教程: 服务器初始化教程方法 本文的服务器初始化是指将ECS云服务器系统恢复到最初状态,服务器中的数据也会被清空,所以初始化之前一定要先备份好。
11507 0
+关注
rstaryan
一直专注于.net领域的技术,希望共同进步
19
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载