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>
(WCF初体验)WCF服务器诊断的更多相关文章
-
(WCF初体验)WCF的认证和消息保护
最近做WCF开发,有个需求是在服务端做认证,网上查资料了解到可以用UserName和Password 来做认证,只需要写好配置文件和在服务端写好验证类就行了,但是网上普遍的博文都是需要用证书,而我自己 ...
-
WCF初体验(C#操作Exchange)
最近再做一个Exchange的客户端维护工具,遇到了很多问题. 由于刚接触C#和Exchange,所以还需要继续学习.在此记录一下,只是一个新手的记录. 环境: 服务器:Exchang ...
-
【WCF】如何将WCF部署到远程服务器
一.前言 最近需要将自己写的WCF服务部署到远程服务器上,也就是公网上.宿主是IIS,在配置成功之前遇到了很多问题,问题如下: 1. WCF该怎么宿主在IIS上,为何会出现 400 Bad ...
-
WCF初见之SQL数据库的增删改查
1.首先要连接数据库,自然要有数据库啦,创建一个数据库表Login,并插入一个数据: --创建数据库表login CREATE TABLE Login ( UName VARCHAR(20) PRIM ...
-
JMS服务器ActiveMQ的初体验并持久化消息到MySQL数据库中
JMS服务器ActiveMQ的初体验并持久化消息到MySQL数据库中 一.JMS的理解JMS(Java Message Service)是jcp组织02-03年定义了jsr914规范(http://j ...
-
.NET平台开源项目速览(15)文档数据库RavenDB-介绍与初体验
不知不觉,“.NET平台开源项目速览“系列文章已经15篇了,每一篇都非常受欢迎,可能技术水平不高,但足够入门了.虽然工作很忙,但还是会抽空把自己知道的,已经平时遇到的好的开源项目分享出来.今天就给大家 ...
-
win7升win10,初体验
跟宿舍哥们聊着聊着,聊到最近发布正式版的win10,听网上各种评论,吐槽,撒花的,想想,倒不如自己升级一下看看,反正不喜欢还可以还原.于是就开始了win10的初体验了,像之前装黑苹果双系统一样的兴奋, ...
-
git初体验(三)git分支
分支的理念就是分身,就像孙悟空拔出猴毛变出很多跟自己一模一样的猴子,然后每个猴子做自己的事情互不干涉,等到所有猴子做完之后,猴子集合来合并劳动成果,然后悟空就把那些猴子猴孙门统统收回了. 你创建了一个 ...
-
python窗体——pyqt初体验
连续两周留作业要写ftp的作业,从第一周就想实现一个窗体版本的,但是时间实在太短,qt零基础选手表示压力很大,幸好又延长了一周时间,所以也就有了今天这篇文章...只是为了介绍一些速成的方法,还有初学者 ...
随机推荐
-
windows脚本调用批处理
set ws=wscript.createobject(“wscript.shell”)ws.run “batchfn.bat /start”,0 save as xxx.vbe file.
-
esriSRGeoCS2Type Constants
ArcGIS Developer Help (Geometry) esriSRGeoCS2Type Constants More geographic coordinate systems. ...
-
JAVASCRIPT中的作用域和原型链,应该算是难点了,要好好多学学,练练
今天初六,要上班啦... JAVASCRIPT,看来是丢不了了.. http://www.dengdeng90.com/wordpress/?p=241 http://www.cnblogs.com/ ...
-
Ionic的项目结构-工程目录
做前端的都应该知道一个框架 Ionic 这个是移动端webAPP最好用的吧(个人认为),那今天就来说说这个项目的结构以及文件的含义,希望对大家有所帮助 想看如何生成文件的话详细看我上篇博客 在用编 ...
-
SQL语言知识点总结
1.DQL.DML.DDL.DCL的概念与区别 一.SQL(Structure Query Language)语言是数据库的核心语言. SQL的发展是从1974年开始的,其发展过程如下: 1974年- ...
-
Jenkins关闭和重启实现方式.
1.关闭Jenkins 只需要在访问jenkins服务器的网址url地址后加上exit.例如我jenkins的地址http://localhost:8080/,那么我只需要在浏览器地址栏上敲下http ...
-
关于4A(统一安全管理平台)系统的理解
1. 4A系统的需求分析 近年来企业用户的业务系统发展十分迅速,内部的系统数和用户数不断增加,网络规模迅速扩大,在应用扩展的同时,各业务系统的安全管理工作相对滞后,无法满足企业发展的长期要求. 各系统 ...
-
换上 SansForgetica-Regular 字体,增加记忆能力
最近澳大利亚的RMIT(皇家墨尔本理工大学) 搞出来这么个字体,号称能增强记忆,原理是通过难以识别的字体,让人提起精神去识别,从而记忆更深刻. 果断弄了个试试. 安装过程: 下载字体文件 点这里去下载 ...
-
Nuget 打包 for .Net Standart project
Create .NET Standard packages with Visual Studio 2015 Publishing packages nuge.exe 放在项目目录中 nuget spe ...
-
安装express并创建工程
安装express npm install express-generator -g 使用命令创建express工程, express projectName 生成express相应的工程结构 bin ...