WebService 异常处理方案

在用Asp.net开发Webservice是简单而且轻松地,这就导致很多时候我们不去关心SOAP,UDDI,WDSL.对于刚写Webservice程序的时候,对提供方法的健壮和异常处理都未做考虑。

由于我也是初学者,对webservice没有关注,通过Google对SOAP和Asp.net下的Webservice Exceptiion 的搜索发现,其实SOAP对异常进行了很好的标签体

SOAP 的 Fault 元素用于下列子元素:

子元素描述
<faultcode>供识别故障的代码
<faultstring>可供人阅读的有关故障的说明
<faultactor>有关是谁引发故障的信息
<detail>存留涉及 Body 元素的应用程序专用错误信息

 

 MS已经做好了Webservice异常处理的封装,我们其实不用做太多的处理就能很好的完成服务器端和客户端的异常

如果服务器端抛出一个简单异常:

Throw New Exception("发生了一些错误!");
客户端收到的SOAP的body内将是fault节点信息,如下:
< soap:Fault >
   
< faultcode > soap:Server </ faultcode >
   
< faultstring > System.Web.Services.Protocols.SoapException: Server was unable to process request. --- &gt;  System.Exception: 发生了一些错误!at AYS17Sept2002.Service1.CallFault() in c:\inetpub\wwwroot\AYS17Sept2002\Service1.asmx.vb:line 49   --- End of inner exception stack trace --- </ faultstring >
   
< detail  />
</ soap:Fault >
由于这样的异常信息会让调用端知道具体的代码结构,存在风险,MS推荐了SoapException异常类
Throw New SoapException( "Server was unable to process request.",SoapException.ServerFaultCode);
这样的异常只会显示"Server was unable to process request"异常信息,而不会过多显示堆栈信息,避免暴露代码结构。
 <faultstring>Server was unable to process request</faultstring>

同时我们也可以通过配置
/configuration/system.web/customErrors/@mode来关闭和开启堆栈信息,默认是RemoteOnly,我们可以设置为:
  • On
  • Off
设置为On将不向客户端显示堆栈跟踪信息

参考文章:
 
  
 


 


 

转载于:https://www.cnblogs.com/lyk831216/archive/2009/05/29/1491668.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值