Web服务中的异常处理(4)_服务器

客户端的异常处理
这个部分,我们将看看在客户端怎样处理从Web服务中所抛出的异常。为了说明这个做法,我们来创建一个新项目CategoriesServiceClient。一旦项目被创建,就在默认的表单上添加一个命令按钮,并命名为btnInvoke。因为需要在客户端引用Web服务,所以在项目CategoriesService中添加一个WebReference。可以通过Project->AddReference菜单选项来完成添加。然后修改命令按钮的Click事件,如下所示。

privatevoidbtnInvoke_Click(objectsender,System.EventArgse)

{

try

{

Categoriescat=newCategories();

MessageBox.Show(cat.AddCategories("
XmlNamespaceManagernsManager=new

XmlNamespaceManager(doc.NameTable);

//AddthenamespacetotheNamespaceManager

nsManager.AddNamespace("errorNS",

"http://tempuri.org/CategoriesService");

XmlNodecategoryNode=

doc.DocumentElement.SelectSingleNode("errorNS:Error",

nsManager);

stringerrorNumber=

categoryNode.SelectSingleNode("errorNS:ErrorNumber",

nsManager).InnerText;

stringerrorMessage=
categoryNode.SelectSingleNode("errorNS:ErrorMessage",

nsManager).InnerText;

stringerrorSource=

categoryNode.SelectSingleNode("errorNS:ErrorSource",

nsManager).InnerText;

MessageBox.Show("ErrorNumberis"+errorNumber);

MessageBox.Show("ErrorMessageis"+errorMessage);

MessageBox.Show("ErrorSourceis"+errorSource);

}
catch(Exceptionex)

{

MessageBox.Show(ex.Message);

}

}

客户端需要处理Web服务所产生的异常。因为Web服务所产生的异常都是SoapException形式的,所以调用Web服务的客户应用程序的代码应该被包含在try...catch块中,并且第一个catch块应该具有捕捉SoapException的处理器。让我们大致看看以上所示的代码。

首先创建一个Categories类的实例。然后传入所要求的XML字符串参数,调用Categories类的AddCategories方法。再后,我们让catch块处理Web服务所产生的异常。在这个代码块中,我们以消息提示框的方式显示异常的产生者。我们通过使用SoapException对象的Code属性来完成这个显示。如果异常是因为客户端的非法输入而产生的,那么Code属性被设置为Client。如果异常是因为Web服务代码(例如,据库服务器已经关闭)而产生的,则Code属性被设为Server。

然后,我们把包含在SoapException对象的Detail元素中的XML数据导入到一个XmlDocument对象中。类似于Web服务的代码,这里同样利用XmlNamespaceManager对象把命名空间与XmlDocument对象关联在一起。之后,取出包含在不同元素中的值,并把它们赋给本地变量。最后,使用消息提示框显示本地变量的值。
把它放在一起

至此,我们已经完成了客户应用程序,现在让我们运行测试它。如果运行客户程序,它将显示一个消息框(具有true值),那么则表明categories详细信息已经成功保存到数据库中。现在,从输入的XML数据中删除元素,运行客户程序。将会得到一个消息,表明异常的原因是客户程序,除此之外,还可以在SoapException对象中得到更多的异常信息。

正如前面所提到的那样,如果Web服务失败是由于服务器端的一些问题引起的,那么SoapException对象的Code属性应该被设置为Server。为了测试这个,修改Web服务中的连接字符串为一个无效值。现在,如果运行客户程序,将会得到一个表明异常的原因是Server的消息(该例中的Web服务)。

结论

本文中,我们已经了解到怎样使用SoapException对象来处理和传递异常给Web服务的客户端。我们还了解到SoapException对象是怎样利用SOAPfault编码(定义在SOAP规范中)来传递异常的。顺便,我们还讨论了处理客户端所产生的异常的步骤。虽然我们创建的应用的功能非常的简单,但是它给我们理解怎样抛出和处理Web服务中的异常提供了一个坚实的基础.
(出处:PConline)

时间: 2024-10-25 16:10:18

Web服务中的异常处理(4)_服务器的相关文章

Web服务中的异常处理(2)_服务器

Web服务的实现 为了达到这个示例的目的,我们创建一个名为CategoriesService的Web服务,选择一个可视化的C#ASP.NETWeb服务作为项目的模版.一旦创建项目,我们就添加一个名为AddCategories的方法,并且给这个方法添加下列代码: [WebMethod] publicboolAddCategories(stringxml) { try { using(SqlConnectionconn=newSqlConnection()) { if(ValidateXml(xml

【ASP.NET Web API教程】4.3 ASP.NET Web API中的异常处理

原文:[ASP.NET Web API教程]4.3 ASP.NET Web API中的异常处理 注:本文是[ASP.NET Web API系列教程]的一部分,如果您是第一次看本系列教程,请先看前面的内容. Exception Handling in ASP.NET Web API ASP.NET Web API中的异常处理 本文引自:http://www.asp.net/web-api/overview/web-api-routing-and-actions/exception-handling

Visual Studio 中创建一个智能项目,在智能项目下创建的窗体中,怎么调用web服务中的方法!!!求解

问题描述 VisualStudio中创建一个智能项目,在智能项目下创建的窗体中,怎么调用web服务中的方法!!!求解VisualStudio中创建一个智能项目,在智能项目下创建的窗体中,怎么调用web服务中的方法!!!求解 解决方案 解决方案二:引用中添加服务引用.找到服务地址.解决方案三:引用1楼chen_ya_ping的回复: 引用中添加服务引用.找到服务地址. 顶楼上,希望遇见问题,先搜索一下,更能提高自己

查看网站中WEB服务中的方法时报异常

问题描述 在WEB服务中写了一个返回泛型的方法,上边也加上了[WebMethod]标签,但是在添加WEB服务的时候我查看一下这个方法,点击调用的时候说"无法查看网页",不晓得这个是什么异常,请各位高手给帮帮忙啊!!! 解决方案 解决方案二:该回复于2009-04-04 20:41:06被版主删除

利用jdk6的endpoint.pulish函数能将web服务发布到非本地的服务器上吗??

问题描述 请问各位:Endpoint.publish("http://localhost:8080/jwsService/sh",newjwsService());是将服务发布到本地的jdk6自带的web容器中但是我将地址改为服务器地址http://172.16,16.2:8080,报Cannotassignrequestedaddress:bind错误,172.16.16.2上安装的是linux版的jdk6.请问各位是什么原因呢??谢谢指教

用WSE在Web服务中验证用户身份

一.Web服务安全与WS-Security 毫无疑问,SOAP和XML Web服务在交互操作和标准上已经完全改变了电子商务领域的格局. 然而直到最近,在Web服务技术领域仍然存在着一些缺陷,那就是处理消息级别的安全.认证.加密.数字签名.路由和附件等问题的能力.为了解决这些安全问题,像IBM.Microsoft和Verisign这样的公司和组织正牵头合作制定统一的Web服务安全规范,以便利用它们原有的Web服务交互操作概念和商业模型,他们推出了WS-Security等规范.可以这么说,自从SOA

在Web服务中使用SDO动态数据API

Service Data Objects (SDO) 2.0 体系结构和 API 能跨不同数据源提供对数据的统一访问,打包在 IBM WebSphere Application Server Version 6.1 Feature Pack for SOA 的 Alpha 版中.本文将说明构建使用动态对象的 Web 服务应用程序所需的步骤,可以下载一个可部署应用程序,以帮助说明如何在 Web 环境中使用动态对象. 引言 Service Data Objects (SDO) 2.1 是一种数据编程

win2003 关闭不需要的数据库服务 禁止不用的web服务扩展的方法 图文_win服务器

操作说明一.主机默认装有的数据库有SQL Server 2005和MySQL,服务默认都是启用的,启用中对CPU的使用和内存的使用都很大,如果主机中不需要数据库或者不需要某一个数据库可以对其服务进行停止,方法如下:1.停止SQL Server方法一:打开"开始"菜单→"所有程序→Microsoft SQL server 2005→配置工具→SQL Server配置管理器"选项,如下图(图1)选择"SQL Server 2005服务",分别右键将&

iis Web站点崩溃的原因分析_服务器

有许多种原因可能导致Web站点无法正常工作,这使得系统地检查所有问题变得很困难.下面将集中分析总结导致Web站点崩溃的最常见的问题.如果可以解决这些常规问题,那么也将有能力对付出现的一些意外情况.  磁盘已满  导致系统无法正常运行的最可能的原因是磁盘已满.一个好的网络管理员会密切关注磁盘的使用情况,隔一定的时间,就需要将磁盘上的一些负载转存到备份存储介质中(例如磁带). 日志文件会很快用光所有的磁盘空间.Web服务器的日志文件.SQL*Net的日志文件.JDBC日志文件,以及应用程序服务器日志