WebService开发中SoapException的用法
在ASP.NET Web service开发中,会用到一个很重要的类型:SoapException,它是一个基于Soap请求机制的异常处理类型, 这也是一个很重要的类型,在编写web service函数时,我们需要用它来抛出异常信息,以便供客户端获取并进行必要的异常处理. 我们可以在它的detail属性里加入自定义的详细的错误信息。
这里有两种写法,
第一种, 就是网上流转某大虾写的,用一个String变量任意拼构一个XML字符串,然后用XmlDocument load XML字符串,再将DocumentElement转入到SoapException中构造函数中:
string strXmlOut = @"<detail>" //注意,一定要用小写的detail节点!
+ "<Error>"
+ "<ErrorNumber>" + errorNumber + "</ErrorNumber>"
+ "<ErrorMessage>" + errorMessage + "</ErrorMessage>"
+ "<ErrorSource>" + errorSource + "</ErrorSource>"
+ "</Error>"
+ "</detail>";
//装载为Xml文档
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.LoadXml(strXmlOut);
//实例化SoapException
SoapException soapEx = new SoapException(errorMessage, faultCodeLocation, uri, xmlDoc.DocumentElement);
throw soapEx;
第二种,就是MSDN里介绍的正规写法:
XmlDocument doc = new XmlDocument();
XmlNode node = doc.CreateNode(XmlNodeType.Element,
SoapException.DetailElementName.Name,
SoapException.DetailElementName.Namespace);
XmlNode xmlErrorNumber= doc.CreateNode(XmlNodeType.Element, "ErrorNumber", "http://tempuri.org/");
xmlErrorNumber.InnerText = exceptionInfo.ErrorCode; //exceptionInfo是一个自定义类型
node.AppendChild(xmlErrorNumber);
XmlNode xmlErrorMessage= doc.CreateNode(XmlNodeType.Element, "ErrorMessage", "http://tempuri.org/");
xmlErrorNumber.InnerText = exceptionInfo.StackTrace;
node.AppendChild(xmlErrorMessage);
SoapException soapEx = new SoapException(exceptionInfo.ErrorMessage, faultCodeLocation, uri, node);
throw soapEx;
参考:http://www.techmango.com/blog/article/DotNet/ASP_NET_SoapExtension_SoapException.htm
转载于:https://www.cnblogs.com/plain-heart/archive/2010/11/24/1887070.html
WebService开发中SoapException的用法相关推荐
- Rive在Flutter开发中的基本用法
概述 Rive Flutter(以下简称Rive)是Rive提供的运行库,是一个实时交互设计和动画工具,可以帮助Flutter开发者在应用中嵌入复杂的动画.设计人员和开发人员可以使用协作编辑器创建响应 ...
- c#winform开发中DialogResult的用法
1.DialogResult经常用在winform开发中的登录,设置参数中,在主窗体中弹出设置参数的窗体,当我们点击设置参数窗体上的确定按钮时,直接返回设置参数窗体的DialogResult的属性即可 ...
- EditText 集锦 - 开发中常用的用法及遇到的各种坑
前言 EditText ,文本输入框,一个再熟悉不过的的控件,在开发当中,我们需要经常用到.这边文章,主要是记录 EditText 的常用用法,需要的时候可以直接复制张贴,提高效率.同时,本文章会持续 ...
- EditText 集锦 - 开发中常用的用法及遇到的各种坑,androidtv开发视频教程
android:background //设置EditText背景."@null"设置背景为透明.当我们设置背景后,EditText的那条线就会消失. android:textAp ...
- 【程序设计】接口在软件开发中的普遍用法
文章目录 Interface GUI API 公共接口 [UML/Java]-Interface Interface 接口(Interface)的概念在计算机科学和软件工程领域的许多上下文中使用,并具 ...
- iOS开发中extension的用法(延展)
extension可以认为是匿名的category,但是这个extension相对于category有有一个特殊功能: 在extension中可以定义可写的属性,公有可读.私有可写的属性(Public ...
- 【干货】Redis在Java开发中的基本使用和巧妙用法
Redis是一款高性能的内存数据结构存储系统,能够支持多种数据结构类型,如字符串.哈希.列表.集合.有序集合等,也能够支持高级功能,如事务.发布/订阅.Lua脚本等,具有高可用性.高并发性和可扩展性的 ...
- git 只merge部分_[Skill]俩小时掌握多人开发中git的主要用法
前言 几个月前看完了git文档,但是在实际开发中对很多git命令的具体影响仍有疑惑,比方说pull.fetch和rebase三个命令和检出位置拎不清. Git - Bookgit-scm.com 安 ...
- python中split啥意思_python中split的用法详解_后端开发
如何用python正则表达式匹配字符串?_后端开发 用python正则表达式匹配字符串的方法:1.当匹配单个位置的字符串时,可以使用[(.+?)]正则表达式来提取:2.当连续多个位置的字符串匹配时,可 ...
最新文章
- 服务器运行速度影响哪些因素,影响服务器运行的九大因素
- mysql中如何求字段的个数字_求高手帮小弟解决一下!关于mysql字段中数字提取求和的问题?...
- 深入理解DOM节点关系
- matlab中腐蚀图像的编写,Matlab实现二值图像的腐蚀算法源代码
- python return用法_初学Python要了解什么 装饰器知识汇总有哪些
- 加密后变成乱码解密_个人磁盘加密软件,使用VeraCrypt进行整盘加密介绍
- ruby学习--block
- java获取屏幕上某坐标点的颜色
- 2月第4周回顾:IT求职困惑不少 虚拟化热点不断
- 数据库建表操作SQL代码大全
- 服务器机械硬盘坏了怎么修复,硬盘修复软件:如何修复硬盘错误?
- DataSource 详解
- ubuntu 20.10 下载安装教程
- android 多渠道打包不同的包名、应用名、应用图标
- ubuntu apt-get install更新域名解析失败问题的处理方法
- 三级等保 mysql8.0.24密码策略设置
- Spring Boot入门(12):一文吃透Spring Boot整合MyBatis-Plus | 保姆级教程,建议收藏
- 【图像增强】Learning Enriched Features for Real Image Restoration and Enhancement 阅读笔记
- tuts4you 注册_设计和开发完整的网站(Tuts + Mini系列,第3页)
- element date-picker range类型时间选择器 限制选中前后7天的时间的方法
热门文章
- smoke中文_smoke的意思在线翻译,解释smoke中文英文含义,短语词组,音标读音,例句,词源【澳典网ODict.Net】...
- at24c16如何划分出多个读写区_读写AT24C02,并用1602显示
- javaweb网关_Java网关服务-AIO(三)
- flutter打包的app有多大_Flutter原生混合开发
- centos图形化桌面的文件在哪_Windows 远程连接 CentOS 7 图形化桌面
- 电路中的这些符号标识,你真的明白吗?
- 嗨,你选择自学成才还是参加培训?
- Windows环境下yolov3+darknet批量处理图片完整教程
- VHDL简单微处理器的设计
- 逻辑回归模型 python_机器学习-逻辑回归分析(Python)