`

Exception Handling in WCF using Fault Contract

阅读更多

Introduction

In all managed applications, processing errors are represented by Exception objects. In WCF applications, service methods communicate processing error information using SOAP fault messages. SOAP faults are message types that are included in the metadata for a service operation and, therefore, create a fault contract that clients can use to make their operation more interactive. In addition, because SOAP faults are expressed to clients in XML form,theyare highly interoperable.

To be more concrete,let us start with anexample:

Create an empty solution in VS2005 called "IndigoException". Add one project called "IndigoService". Nexta dd a reference to System.ServiceModel and then a dd an interface.

using System;

using System.Collections.Generic;

using System.Text;

using System.ServiceModel;

using System.Runtime.Serialization;

namespace Indigo

{

[ServiceContract()]

public interface IService

{

[OperationContract]

[FaultContract(typeof (MyFaultException))]

string GetMessage();

}
}

Add one more class as follows:


using
System;

using System.Text;

using System.Runtime.Serialization;

namespace Indigo

{

[DataContract]

public class MyFaultException

{

private string _reason;

[DataMember]

public string Reason

{

get { return _reason; }

set { _reason = value ; }

}

}

}

Add one class "Service" and a reference to System.ServiceModel

using System;

using System.Collections.Generic;

using System.Text;

using System.ServiceModel;

namespace Indigo

{

public class Service : IService

{

#region IService Members

public string GetMessage()

{

try

{

int i, j, k;

j = 1;

k = 0;

i = j / k;

}

catch (Exception exp)

{

MyFaultException theFault = new MyFaultException();

theFault.Reason = "Some Error " + exp.Message.ToString();

throw new FaultException<MyFaultException>(theFault);

}

return "No Error" ;

}

#endregion

}

}

Build the project.

Now add another project "Host" and add reference to "IndigoService" project and to System.ServiceModel

using System;

using System.Collections.Generic;

using System.Text;

using System.ServiceModel;

namespace Indigo

{

class IndigoHost

{

internal static ServiceHost myServiceHost = null ;

static void Main(string [] args)

{

StartService();

Console .WriteLine("Service at your service" );

Console .ReadKey();

StopService();

}

internal static void StartService()

{

myServiceHost = new ServiceHost(typeof (Indigo.Service));

myServiceHost.Open();

}

internal static void StopService()

{

//Call StopService from your shutdown logic (i.e. dispose method)

if (myServiceHost.State != CommunicationState.Closed)

myServiceHost.Close();

}

}

}

Add app.config with the following XML:

<? xml version = "1.0 " encoding = "utf-8 " ?>

< configuration >

< system.serviceModel >

< services >

< service behaviorConfiguration = "MyServiceTypeBehaviors " name = "Indigo.Service ">

< endpoint address = "Service " binding = "wsHttpBinding " contract = "Indigo.IService " />

< host >

< baseAddresses >

< add baseAddress = "http://localhost:1111/Indigo " />

</ baseAddresses >

</ host >

</ service >

</ services >

< behaviors >

< serviceBehaviors >

< behavior name = "MyServiceTypeBehaviors ">

< serviceMetadata httpGetEnabled = "true " />

< serviceDebug includeExceptionDetailInFaults = "true " />

</ behavior >

</ serviceBehaviors >

</ behaviors >

</ system.serviceModel >
</ configuration >

Build the project. Run Host.exe from VS2005 command prompt. You should get the messageat thecommand prompt as follows:



Add another project "IndigoClient" and add System.ServiceModel

Now add service refrence to the service URL (i.e. http://localhost:1111/Indigo )

It will create localhost.cs in service reference.

Add a class Program.cs as follows:

using System;

using System.Collections.Generic;

using System.Text;

using System.ServiceModel;

namespace Indigo

{

class Program

{

static void Main(string [] args)

{

string result = "" ;

try

{

IndigoClient.localhost.IService ww = new IndigoClient.localhost.ServiceClient
();

result = ww.GetMessage();

}

catch (FaultException<IndigoClient.localhost.MyFaultException> ee)

{

result = "Exception: " + ee.Detail.Reason;

}

Console .WriteLine(result);

Console .ReadLine();

}

}

}


Add app.config with following XML


<?
xml version = "1.0 " encoding = "utf-8 " ?>

< configuration >

< system.serviceModel >

< bindings >

< wsHttpBinding >

< binding

分享到:
评论

相关推荐

    毕业设计-线性规划模型Python代码.rar

    1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、本项目仅用作交流学习参考,请切勿用于商业用途。

    调用百度云API, 基于python的微博评论情感偏向分析

    DATA: 可供参考的微博评论数据。 详见 /DATA/weibocommennts.csv CODE: apiGetSheet.py 调用百度API 获得 微博评论对应 文字的 情感得分, sheetGetvalue.py 根据情感得分进行标准化,获得实际倾向。

    基于ssm的高速公路收费系统源代码(完整前后端+mysql+说明文档+LW).zip

    管理员 管理员信息管理 负责人管理 员工信息管理 公告信息管理 小型车收费标准设置(元/每公里) 大卡车收费标准设置(元/吨公里) 收费信息统计,统计小车和卡车收费,按月统计 负责人 个人资料修改 公告查看 小车收费统计(某员工某月统计) 大卡车收费统计(某员工某月统计) 员工 个人资料修改 公告查看 小型车收费登记(车牌号,车辆照片,行使公里数,收费金额,收费日期,收费员,按公里数可以自动计算费用 收费金额=收费标准*公里数) 大卡车金额设置(每吨/元)(车牌号,车辆照片,行使公里数,吨,收费金额,收费日期,收费员, 收费金额=收费标准*吨*公里数 ) 环境说明: 开发语言:Java 框架:ssm,mybatis JDK版本:JDK1.8 数据库:mysql 5.7 数据库工具:Navicat11 开发软件:eclipse/idea Maven包:Maven3.3 服务器:tomcat7

    Zabbix是一款开源的监控工具,用于实时监控IT基础设施,包括网络、服务器和应用程序 它通过触发器和告警机制帮助及时发现并响应问题,同时提供数据可视化和报告功能,以优化性能和确保系统安全

    本套zabbix是基于6.0版本部署,内容涵盖zabbix的简介、zabbix server安装、zabbix基本概念、快速入门、zabbix进阶、zabbix实践、zabbix的高级监控使用。 =======知识领域 网络监控:监控网络设备、服务器和应用程序的运行状态。 系统监控:监控服务器性能,如CPU使用率、内存使用情况、网络流量等。 数据库监控:监控数据库性能和状态。 应用程序监控:监控应用程序的运行情况和性能指标。 云监控:监控云服务和虚拟机的健康状况

    商品库存管理系统课程设计报告.docx

    商品库存管理系统课程设计报告.docx

    嘉兴智能卫浴项目建议书.docx

    嘉兴智能卫浴项目建议书.docx

    Java系统源码+夕阳红公寓管理系统

    Java系统源码+夕阳红公寓管理系统 内容概要: 本资源包含了完整的Java前后端源码及说明文档,适用于想要快速搭建并部署Java Web应用程序的开发者、学习者。 技术栈: 后端:Java生态系统,包含Spring Boot、Shiro、MyBatis等,数据库使用Mysql 前端:Vue、Bootstrap、Jquery等 适用场景示例: 1、毕业生希望快速启动一个新的Java Web应用程序。 2、团队寻找一个稳定的模板来加速产品开发周期。 3、教育机构或个人学习者用于教学目的或自学练习。 4、创业公司需要一个可以立即投入使用的MVP(最小可行产品)。

    基于ssm的新闻发布及管理系统源代码(完整前后端+mysql+说明文档+LW).zip

    (1)用户管理: 用户注册:新用户注册 用户登录:新用户登录 找回密码:忘记密码找回密码 用户评论:发表对新闻的评论 (2)管理员管理: 系统账号管理:管理员管理系统现有账号,进行删除停用等操作 系统公告管理:系统公告的发布和删除 新闻栏目管理:新闻栏目的新增和删除 ...

    Java系统源码+计算机学院校友网

    Java系统源码+计算机学院校友网 内容概要: 本资源包含了完整的Java前后端源码及说明文档,适用于想要快速搭建并部署Java Web应用程序的开发者、学习者。 技术栈: 后端:Java生态系统,包含Spring Boot、Shiro、MyBatis等,数据库使用Mysql 前端:Vue、Bootstrap、Jquery等 适用场景示例: 1、毕业生希望快速启动一个新的Java Web应用程序。 2、团队寻找一个稳定的模板来加速产品开发周期。 3、教育机构或个人学习者用于教学目的或自学练习。 4、创业公司需要一个可以立即投入使用的MVP(最小可行产品)。

    四六级报名管理系统.pdf

    四六级报名管理系统.pdf

    C语言PTA-数组答案代码合集(湖工1-50)

    C语言PTA-数组答案代码合集(湖工1-50)

    <项目代码>YOLOv8 安全背心识别<目标检测>

    YOLOv8 安全背心识别项目代码 项目详细介绍请看链接: https://blog.csdn.net/qq_53332949/article/details/144543625 数据集详细介绍请看:https://blog.csdn.net/qq_53332949/article/details/141503406 数据集下载请看:https://download.csdn.net/download/qq_53332949/89711610?spm=1001.2101.3001.9500 按文件中requirements.txt文件配置环境即可使用。

    后勤智能1. 1. 1. 1. 管理系统-...pdf

    后后勤智能1.。1. 1. 1. 管理系统-...pdf后勤智能1.。1. 1. 管理系统-...pdf后勤智能1.。1. 管理系统-...pdf后勤智能1.。管理系统-...pdf勤智能管理系统-...pdf

    瓶子、塑料袋检测70-YOLO(v5至v9)、COCO、CreateML、Darknet、Paligemma、TFRecord、VOC数据集合集.rar

    瓶子、塑料袋检测70-YOLO(v5至v9)、COCO、CreateML、Darknet、Paligemma、TFRecord、VOC数据集合集.rarset1(拍摄照片)-V15 2023-08-09 3:43 PM ============================= *与您的团队在计算机视觉项目上合作 *收集和组织图像 *了解和搜索非结构化图像数据 *注释,创建数据集 *导出,训练和部署计算机视觉模型 *使用主动学习随着时间的推移改善数据集 对于最先进的计算机视觉培训笔记本,您可以与此数据集一起使用 该数据集包括133张图像。 汽车以可可格式注释。 将以下预处理应用于每个图像: *像素数据的自动取向(带有Exif-Arientation剥离) *调整大小为640x640(拉伸) 应用以下扩展来创建每个源图像的3个版本: * -24和+24度之间的随机旋转

    基于ssm的ssm软件bug管理系统源代码(完整前后端+mysql+说明文档+LW).zip

    管理员 个人密码修改 项目经理管理 员工管理(调试员,解决方案人员) 日志管理(用户登录日志) 系统设置 项目经理 个人信息管理,修改 项目模块管理 按项目分配调试员 调试员 个人信息管理,修改 BUG信息管理(各个环节的跟踪信息录入) 查看解决方案 解决方案人员 个人信息管理,修改 查看缺陷信息 提出解决方案 环境说明: 开发语言:Java 框架:ssm,mybatis JDK版本:JDK1.8 数据库:mysql 5.7 数据库工具:Navicat11 开发软件:eclipse/idea Maven包:Maven3.3 服务器:tomcat7

    电路电压检测14-YOLO(v5至v9)、COCO、CreateML、Paligemma、VOC数据集合集.rar

    电路电压检测14-YOLO(v5至v9)、COCO、CreateML、Paligemma、VOC数据集合集.rar电路电压-V2释放 ============================= *与您的团队在计算机视觉项目上合作 *收集和组织图像 *了解非结构化图像数据 *注释,创建数据集 *导出,训练和部署计算机视觉模型 *使用主动学习随着时间的推移改善数据集 它包括132张图像。 电路电压以可可格式注释。 将以下预处理应用于每个图像: 没有应用图像增强技术。

    基于java的物资管理系统项目源码.zip

    项目包含前后台完整源码。 项目都经过严格调试,确保可以运行! 具体项目介绍可查看博主文章或私聊获取 助力学习实践,提升编程技能,快来获取这份宝贵的资源吧!

    基于ssm的家居商城系统的设计与实现+jsp源代码(完整前后端+mysql+说明文档+LW).zip

    系统实现: 用户功能模块:用户点击进入到系统操作界面,可以对主页、个人中心、我的收藏管理、订单管理等功能模块,我的收藏管理:通过列表可以获取用户ID、收藏ID、表名、收藏名称、收藏图片信息并进行修改操作 管理员功能模块:管理员通过用户名和密码填写完成后进行登录。管理员登录成功后进入到系统操作界面,可以对主页、个人中心、用户管理、商品分类管理、商品信息管理、系统管理、订单管理等功能模块进行相对应操作。 项目包含完整前后端源码和数据库文件 环境说明: 开发语言:Java 框架:ssm,mybatis JDK版本:JDK1.8 数据库:mysql 5.7 数据库工具:Navicat11 开发软件:eclipse/idea Maven包:Maven3.3 服务器:tomcat7

    Python项目-实例-08 抖音表白.zip

    Python课程设计,含有代码注释,新手也可看懂。毕业设计、期末大作业、课程设计、高分必看,下载下来,简单部署,就可以使用。 包含:项目源码、数据库脚本、软件工具等,该项目可以作为毕设、课程设计使用,前后端代码都在里面。 该系统功能完善、界面美观、操作简单、功能齐全、管理便捷,具有很高的实际应用价值。

    绝对给力的源码,在线音乐播放器完整项目.zip

    Android 毕业设计,Android 毕业设计,小Android 程设计,含有代码注释,新手也可看懂。毕业设计、期末大作业、课程设计、高分必看,下载下来,简单部署,就可以使用。 包含:项目源码、数据库脚本、软件工具等,该项目可以作为毕设、课程设计使用,前后端代码都在里面。 该系统功能完善、界面美观、操作简单、功能齐全、管理便捷,具有很高的实际应用价值。

Global site tag (gtag.js) - Google Analytics