前言

上周回母校见了一下大学老师,还有些同学,发现差距还是挺大的。。。圈子不一样,真的就什么都不一样了。。

第16集 WCF中的Soap错误 Soap faults in WCF

首先简单介绍一下什么是Soap。

Soap全称Simple Object Access Protocol, 简单对象访问协议,他是一种交换数据的协议规范,是一种轻量的、简单的、基于xml的协议,它被设计成在WEB上交换结构化的和固化的信息。

因为异常是不允许通过WCf的service channel 发送给客户端的,所以,服务端把Exception序列化为Soap格式的信息,然后发送给客户端。

关于Service channel, 查了一下,大概是这么个定义。有句话是这么说的:

The main goal of Channel is to transform message to format understandable by the communication wire and compatible to both server and client and then transport the message over the wire in between client and server.

XML格式的Soap faults 和平台无关,一个典型的SOAP错误信息包含以下几个方面。

  1. FaultCode
  2. FaultReason
  3. Detail elements 等。

以后的视频会着重讲一下这个Detail elements。

SOAP faults基于两种格式,SOAP 1.1 和SOAP 1.2, 两者的文档在这里,可以看看。在WCF中,如果bingding是BasicHttpBinding,就用1.1, 其他的WCF内置bingding用1.2.

我们先根据第九集的内容启用WCF的日志记录功能,然后在客户端调用服务,会生成一个svclog文件,双击打开,选择item,就可以看到具体的log message。

打开之后出了点小插曲,报了下面的错误:

The trace record is not correct and cannot be loaded. This might be caused by one of the following reasons:

record不能被加载,看了一下内容,xml格式不完整,顺手谷歌了一下,(先试验bing,没找出来,然后百度试了一下,也不行)不的不说,谷歌真的nb。

解决方案是在<system.diagnostics>的节点下加上一个<trace autoflush=”true”/>,如下图:

打开之后可以看最后一个,是个response, 倒数第二个是request。

由图可以看到faultcode,faultstring(因为我们用的basicHttpBinding,所以是soap1.1,所以是faultstring,如果是其他bingding,就是faultreason),detail都有了(如果没有启用includeExceptionDetailInFaults=true,那么就看不到detail)。

然后来试验一下其他bingding,比如wsHttpBinding(这个以后会着重讲)。

首先是服务端的修改:把basicHttpBinding改成wsHttpBingding

还要设置bingding的security mode = none, 因为对于wsHttpBingding,这个默认是打开的,简而言之,非明文传输的。

然后rerun这个host

更新客户端的服务引用

结束之后会发现,客户端的配置文件里面的binding也变成了wsHttpBinding

再次调用,然后打开svclog,看到如下结果:

这样,就什么都有了。

这集介绍了fault message在soap1.1 和1.2 下的不同表现。

Thank you!

WCF 入门 (16)的更多相关文章

  1. WCF入门教程(图文)VS2012

    WCF入门教程(图文)VS2012 上一遍到现在已经有一段时间了,先向关注本文的各位“挨踢”同仁们道歉了.小生自认为一个ITer如果想要做的更好,就需要将自己的所学.所用积极分享出来,接收大家的指导和 ...

  2. WCF入门教程(四)通过Host代码方式来承载服务 一个WCF使用TCP协议进行通协的例子 jquery ajax调用WCF,采用System.ServiceModel.WebHttpBinding System.ServiceModel.WSHttpBinding协议 学习WCF笔记之二 无废话WCF入门教程一[什么是WCF]

    WCF入门教程(四)通过Host代码方式来承载服务 Posted on 2014-05-15 13:03 停留的风 阅读(7681) 评论(0) 编辑 收藏 WCF入门教程(四)通过Host代码方式来 ...

  3. 【转】WCF入门教程六[一个简单的Demo]

    一.前言 前面的几个章节介绍了很多理论基础,如:什么是WCF.WCF中的A.B.C.WCF的传输模式.本文从零开始和大家一起写一个小的WCF应用程序Demo. 大多框架的学习都是从增.删.改.查开始来 ...

  4. 学习WCF入门的第一个实例

    一.概述 WCF说白了就是一个基于终结点的通信手段!就是Service端提供一定的功能实现,然后暴露出一个或多个终结点,Client端调用Service端的功能(可以理解为调用一个函数),那么Clie ...

  5. WCF入门教程(五)配置文件

    WCF入门教程(五)配置文件 服务协定以及实现写好后,需要将相关服务公布出去,就需要HOST来承载,供客户端来调用. 承载服务有两种方式,一种通过配置文件,一种通过代码进行配置.上一章已经介绍了代码方 ...

  6. WCF入门教程(四)通过Host代码方式来承载服务

    WCF入门教程(四)通过Host代码方式来承载服务 之前已经讲过WCF对外发布服务的具体方式. WCF入门教程(一)简介 Host承载,可以是web,也可以是控制台程序等等.比WebService有更 ...

  7. WCF入门教程(三)定义服务协定--属性标签

    WCF入门教程(三)定义服务协定--属性标签 属性标签,成为定义协议的主要方式.先将最简单的标签进行简单介绍,以了解他们的功能以及使用规则. 服务协定标识,标识哪些接口是服务协定,哪些操作时服务协定的 ...

  8. WCF入门教程(二)如何创建WCF服务

    WCF入门教程(二)从零做起-创建WCF服务 通过最基本的操作看到最简单的WCF如何实现的.这是VS的SDK默认创建的样本 1.创建WCF服务库 2.看其生成结构 1)IService1.cs(协议) ...

  9. WCF入门教程(一)简介

    WCF入门教程(一)简介 1.WCF是什么? WCF( Windows Communication Foundation), 是Microsoft为构建面向服务的应用提供的分布式通信编程框架,是.NE ...

  10. [WCF编程]1.WCF入门示例

    一.WCF是什么? Windows Communication Foundation(WCF)是由微软开发的一系列支持数据通信的应用程序框架,整合了原有的windows通讯的 .net Remotin ...

随机推荐

  1. Linux nmap

    一.简介 Nmap(Network Mapper)是一款开放源代码的网络探测和安全审核工具.它用于快速扫描一个网络和一台主机开放的端口,还能使用TCP/IP协议栈特征探测远程主机的操作系统类型.nma ...

  2. db2 常用命令(二)

    1. 打开命令行窗口 #db2cmd 2. 打开控制中心 # db2cmd db2cc 3. 打开命令编辑器 db2cmd db2ce   ======脚本文件操作命令=======  -- 执行脚本 ...

  3. 初探Team Foundation Server (TFS) 2015 REST API

    REST是一种简洁方便的Web服务,通过基于http协议的远程通信,可以为多种客户端程序提供远程服务,大幅提高了服务器系统的可扩展性. 微软宣布从Team Foundation Server 从201 ...

  4. hdu1042 N!

    /* N! Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 262144/262144 K (Java/Others) Total Subm ...

  5. 单调队列应用--BZOJ 3831 Little Bird

    3831: [Poi2014]Little Bird Time Limit: 20 Sec  Memory Limit: 128 MB Description In the Byteotian Lin ...

  6. Unity-WIKI 之 SplashScreen

    组件功能 在屏幕上的一个启动画面消失,等待几秒钟(或等待用户输入),然后淡出,下一个场景加载. 组件源码 using UnityEngine; using System.Collections; // ...

  7. java 15- 5 List集合

    需求 1:List集合存储字符串并遍历.(步骤跟Collection集合一样,只是最初创建集合对象中的集合类改变了,Collection变成List) List集合的特点: 有序(存储和取出的元素一致 ...

  8. SpringMVC常用接收Json的两种方法

    @RequestBody JSONObject requestJson @RequestBody User user 一种是自定义加注解,由Spring负责绑定,一种是使用通用的JSONObject

  9. css3爆炸效果更换图片轮播图

    思路:给一个div设置一个背景图片1.jpg,然后在这个div上面用两个for循环动态的创建一个列数为C行数为R数量的span,并给这些span设置宽高.定位并设置背景图片0.jpg,然后设置每个sp ...

  10. .Net 项目代码风格要求小结

    代码风格没有正确与否,重要的是整齐划一,这是我拟的一份<.Net 项目代码风格要求>,供大家参考. 1. C# 代码风格要求1.1注释 类型.属性.事件.方法.方法参数,根据需要添加注释. ...