WCF错误处理
介绍
WCF(Windows Communication Foundation) -异常处理:一般Exception的处理,FaultException和FaultException<T>的抛出和处理,使用IErrorHandler处理异常。
下面介绍第三种异常:FaultException<T>的抛出和处理
一、强类型化一个SOP错误类,传递需要用[DataContract]
/// <summary>
/// 错误信息实体类(用于错误契约FaultContract)
/// </summary>
[DataContract]
public class FaultMessage
{
/// <summary>
/// 错误信息
/// </summary>
[DataMember]
public string Message { get; set; } /// <summary>
/// 错误代码
/// </summary>
[DataMember]
public int ErrorCode { get; set; }
}
二、在操作协定中用[FaultContract]错误协定指定错误类型
[ServiceContract]
public interface IHello
{
[OperationContract]
[FaultContract(typeof(FaultMessage))]
void HelloFaultExceptionGeneric();
}
三、在实现代码中,定义一个方法,可以抛出一个FaultException<FaultMessage>的异常
/// <summary>
/// Hello类
/// </summary>
public class Hello : IHello
{
/// <summary>
/// 抛出FaultException<T>异常
/// </summary>
public void HelloFaultExceptionGeneric()
{
throw new FaultException<FaultMessage>(new FaultMessage { Message = "抛出FaultException<T>异常", ErrorCode = -1 }, "为了测试FaultException<T>用的");
}
}
四、在客户端中,可以捕获FaultException<FaultMessage>的异常。FaultMessage用Detail属性访问。
protected void btnHelloFaultExceptionGeneric_Click(object sender, EventArgs e)
{
ExceptionService.HelloClient proxy = new ExceptionService.HelloClient();
try
{
proxy.HelloFaultExceptionGeneric();
}
catch (System.ServiceModel.FaultException<ExceptionService.FaultMessage> ex)
{
lblMsg.Text = string.Format("错误代码:{0};错误信息:{1};错误原因:{2}",
ex.Detail.ErrorCode.ToString(),
ex.Detail.Message,
ex.Reason.ToString());
}
finally
{
proxy.Close();
}
}
WCF错误处理的更多相关文章
- WCF初探-20:WCF错误协定
WCF错误协定概述 在所有托管应用程序中,处理错误由 Exception 对象表示. 在基于 SOAP 的应用程序(如 WCF 应用程序)中,服务方法使用 SOAP 错误消息来传递处理错误信息. SO ...
- WCF错误:由于目标计算机积极拒绝,无法连接;127.0.0.1:3456
问题描述 最近Windows打完补丁,原来部署在本机的WCF无法连接:出现如下WCF错误:由于目标计算机积极拒绝,无法连接:127.0.0.1:3456 解决方案 检查一下本机的服务:NetTcpAc ...
- WCF错误:由于目标计算机积极拒绝,无法连接
今天学习WCF时用C#重写测试例子时,发生错误:由于目标计算机积极拒绝,无法连接.找了N久,网上也没有找到实际的解决方法.查看netstat -an发现当自承载宿主运行时,没有侦听配置的端口.开始总以 ...
- WCF错误:413 Request Entity Too Large
在我们用WCF传输数据的时候,如果启用默认配置,传输的数据量过大,经常会出这个错误. WCF包含服务端与客户端,所以这个错误可能出现在服务端返回数据给客户端,或客户端传数据给服务端时. 1. 服务端返 ...
- WCF错误:413 Request Entity Too Large 的一个解决方法
在我们用WCF传输数据的时候,如果启用默认配置,传输的数据量过大,经常会出这个WCF:413 Request Entity Too Large的错误. WCF包含服务端与客户端,所以这个错误可能出现在 ...
- WCF错误"The maximum message size quota for incoming messages (65536) has been exceeded."
错误原因有三:超过最大接受的传输值 1.webconfig或者 app.config 文件中的binding 节点进行 配置 maxBufferSize="2147483647" ...
- 调用WCF错误-There was no endpoint listening
问题描述: 今天在调用WCF服务时候出现了下面的错误. 原因: 调用服务的客户端ip设置成了固定ip.(至于固定ip为什么会导致这个错误,没能去研究) 解决方法: 将客户端ip设置成自动获取.
- wcf 错误提示
wcf 不弹出错误提示,只显示“服务器处理请求时遇到错误.有关构造有效服务请求的内容,请参阅服务帮助页”,添加以下节点可以弹出错误提示. <serviceDebug includeExcepti ...
- WCF错误远程服务器返回了意外响应: (413) Request Entity Too Large。解决方案
这个问题出现的原因是 调用wcf服务的时候传递的参数 长度太大 wcf数据传输采用的默认的大小是65535字节. ---------------------------------------- ...
随机推荐
- java多线程上篇(二) -- 进程的控制、同步
一.进程的控制 进程的基本数据信息是操作系统控制管理进程的数据集合,这些信息就是用来控制进程的,此处我们说的进程控制就是进程的管理. 比如进程有状态,那么进程的创建.终止,状态的切换,这都不是进程自主 ...
- Windows10下安装numpy
1.https://bootstrap.pypa.io/get-pip.py 下载get-pip.py(右键另存为即可) 2.命令行下在get-pip.py所在文件夹下运行get-pip.py 3.命 ...
- 使用redis和thread告警并避免重复告警
spring cloud使用redis 增加监控,微服务的监控体系特别重要,这里增加了告警(使用thread异步告警),同时不能短时间内不能重复告警(使用redis避免重复) 1.增加依赖 ...
- spring cloud 停止服务
shutdown的默认url为host:port/shutdown,当需要停止服务时,向服务器post该请求即可,如:curl -X POST host:port/shutdown将得到形如{&quo ...
- C# 注册windows 服务
sc delete CCGSQueueService sc create CCGSQueueService binpath= "D:\DKX4003\services\CCGSQueueSe ...
- IntelliJ IDEA 最新版 2019.2.4 激活 (持续更新)(含windows和Mac)
IntelliJ IDEA 最新版 2019.2.4 激活 最新版激活包下载地址: 百度网盘 提取码: i28c 转载: Neo Peng Jetbrains系列产品 激活方式 同下述方式相同,只需要 ...
- (十七)SpringBoot之使用异步消息服务jms之ActiveMQ
一.引入maven依赖 <dependencies> <dependency> <groupId>org.springframework.boot</grou ...
- python练习:函数2
习题: 定义一个方法get_num(num),num参数是列表类型,判断列表里面的元素为数字类型.其他类型则报错,并且返回一个偶数列表:(注:列表里面的元素为偶数). def get_num(num) ...
- VBA学习资料分享-6
从网上抓取数据到EXCEL中是VBA的一个常用之处,今天分享下VBA网抓的一些套路,主要有以下几种: 第一种:msxml2.xmlhttp/Microsoft.XMLHTTP/WinHttp.WinH ...
- MFC如何显示位图
1. 资源文件中加载 bmp 2.1. 静态加载图片 在属性下设置为如下即可 2.2 动态加载图片 其中要在控件中添加CStatic变量,并且属性设置为如下 并且在按钮控件中加入 如下代码 void ...