WCF 入门 (16)
前言
上周回母校见了一下大学老师,还有些同学,发现差距还是挺大的。。。圈子不一样,真的就什么都不一样了。。
第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错误信息包含以下几个方面。
- FaultCode
- FaultReason
- 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)的更多相关文章
- WCF入门教程(图文)VS2012
WCF入门教程(图文)VS2012 上一遍到现在已经有一段时间了,先向关注本文的各位“挨踢”同仁们道歉了.小生自认为一个ITer如果想要做的更好,就需要将自己的所学.所用积极分享出来,接收大家的指导和 ...
- 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代码方式来 ...
- 【转】WCF入门教程六[一个简单的Demo]
一.前言 前面的几个章节介绍了很多理论基础,如:什么是WCF.WCF中的A.B.C.WCF的传输模式.本文从零开始和大家一起写一个小的WCF应用程序Demo. 大多框架的学习都是从增.删.改.查开始来 ...
- 学习WCF入门的第一个实例
一.概述 WCF说白了就是一个基于终结点的通信手段!就是Service端提供一定的功能实现,然后暴露出一个或多个终结点,Client端调用Service端的功能(可以理解为调用一个函数),那么Clie ...
- WCF入门教程(五)配置文件
WCF入门教程(五)配置文件 服务协定以及实现写好后,需要将相关服务公布出去,就需要HOST来承载,供客户端来调用. 承载服务有两种方式,一种通过配置文件,一种通过代码进行配置.上一章已经介绍了代码方 ...
- WCF入门教程(四)通过Host代码方式来承载服务
WCF入门教程(四)通过Host代码方式来承载服务 之前已经讲过WCF对外发布服务的具体方式. WCF入门教程(一)简介 Host承载,可以是web,也可以是控制台程序等等.比WebService有更 ...
- WCF入门教程(三)定义服务协定--属性标签
WCF入门教程(三)定义服务协定--属性标签 属性标签,成为定义协议的主要方式.先将最简单的标签进行简单介绍,以了解他们的功能以及使用规则. 服务协定标识,标识哪些接口是服务协定,哪些操作时服务协定的 ...
- WCF入门教程(二)如何创建WCF服务
WCF入门教程(二)从零做起-创建WCF服务 通过最基本的操作看到最简单的WCF如何实现的.这是VS的SDK默认创建的样本 1.创建WCF服务库 2.看其生成结构 1)IService1.cs(协议) ...
- WCF入门教程(一)简介
WCF入门教程(一)简介 1.WCF是什么? WCF( Windows Communication Foundation), 是Microsoft为构建面向服务的应用提供的分布式通信编程框架,是.NE ...
- [WCF编程]1.WCF入门示例
一.WCF是什么? Windows Communication Foundation(WCF)是由微软开发的一系列支持数据通信的应用程序框架,整合了原有的windows通讯的 .net Remotin ...
随机推荐
- web.xml文件报错:The processing instruction target matching "[xX][mM][lL]" is not allowed.
昨晚把我的项目上传到了gitlab,然后今天在公司从gitlab下载下来, 发现web.xml报错.
- List与Set的使用
接口Collection: Collection是Java的一个集合框架, 也是一个根接口.JDK中没有提供此接口的任何实现,但是提供了更具体的子接口Set和List接口的实现,所有的Collecti ...
- socket通信入门
以一个基本的python程序为例解释 源代码如下: #!/usr/bin/env python #指出代码用什么程序去运行它.首先会到env设置里查找python的安装路径,再调用对应路径下的解释器 ...
- python 邮件发送 脚本
import smtplib from email.header import Header from email.mime.text import MIMEText from_addr = 'XXX ...
- 《TCP/IP详解 卷一》读书笔记-----广播&多播&IGMP
1.广播和多播都只适用于UDP,因为TCP是面向连接的,需要将两台主机的两个进程绑定在一起,即IP地址和端口对 2.通常,网卡能看到网络中的每一个数据帧,但是往往它只接受目的地址与自己MAC地址相同的 ...
- 读《深入理解Java虚拟机》有感——第二部分:虚拟机类加载机制
一.类加载过程 执行时机:编译程序——>执行程序(JVM启动.程序运行),类加载发生在程序运行期间 各个阶段:分为加载阶段.连接阶段(验证.准备.解析).初始化.使用.卸 ...
- 边工作边刷题:70天一遍leetcode: day 84-3
Meeting Rooms I/II 要点:这题和skyline类似,利用了interval start有序的特点,从左向右处理,用一个heap来动态表示当前占用rooms的时间段,所以heap的si ...
- 边工作边刷题:70天一遍leetcode: day 84-1
Verify preorder sequence of Binary Search Tree 要点:simulating preorder sequence: 根据preorder的特点,首先会一直向 ...
- POJ 1515 Street Directions --一道连通题的双连通和强连通两种解法
题意:将一个无向图中的双向边改成单向边使图强连通,问最多能改多少条边,输出改造后的图. 分析: 1.双连通做法: 双连通图转强连通图的算法:对双连通图进行dfs,在搜索的过程中就能按照搜索的方向给所有 ...
- java9-3 返回类型
1. 返回值类型 基本类型:(基本类型简单) 引用类型: 类:返回的是该类的对象 class Student2 { public void study() { System.out.println(& ...