Web Service 异常处理方案
2010-07-16 13:33
232 查看
在用Asp.net开发Webservice是简单而且轻松地,这就导致很多时候我们不去关心SOAP,UDDI,WDSL.对于刚写Webservice程序的时候,对提供方法的健壮和异常处理都未做考虑。
由于我也是初学者,对webservice没有关注,通过Google对SOAP和Asp.net下的Webservice Exceptiion 的搜索发现,其实SOAP对异常进行了很好的标签体
SOAP 的 Fault 元素用于下列子元素:
MS已经做好了Webservice异常处理的封装,我们其实不用做太多的处理就能很好的完成服务器端和客户端的异常
如果服务器端抛出一个简单异常:
<soap:Fault>
<faultcode>soap:Server</faultcode>
<faultstring>System.Web.Services.Protocols.SoapException: Server was unable to process request. ---> 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>
On
Off
由于我也是初学者,对webservice没有关注,通过Google对SOAP和Asp.net下的Webservice Exceptiion 的搜索发现,其实SOAP对异常进行了很好的标签体
SOAP 的 Fault 元素用于下列子元素:
子元素 | 描述 |
---|---|
<faultcode> | 供识别故障的代码 |
<faultstring> | 可供人阅读的有关故障的说明 |
<faultactor> | 有关是谁引发故障的信息 |
<detail> | 存留涉及 Body 元素的应用程序专用错误信息 |
如果服务器端抛出一个简单异常:
Throw New Exception("发生了一些错误!"); 客户端收到的SOAP的body内将是fault节点信息,如下:
<soap:Fault>
<faultcode>soap:Server</faultcode>
<faultstring>System.Web.Services.Protocols.SoapException: Server was unable to process request. ---> 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将不向客户端显示堆栈跟踪信息
相关文章推荐
- js构建ui的统一异常处理方案(三)
- {"当 IDENTITY_INSERT 设置为 OFF 时,不能向表 'OrderList' 中的标识列插入显式值"}-异常处理方案
- WEBLOGIC 11G 异常 qtjava.zip was unexpected at this time 处理方案
- Ajax程序:处理异步调用中的异常(在客户端调用Web Service代理时发生异常的处理办法)
- 【转】ASP.NET中OutOfMemoryException异常的处理方案
- Glusterfs文件系统删除文件异常原因及处理方案
- Maven编译jar出现:无法确定 T 的类型参数的异常的原因和处理方案
- 使用ASP.NET AJAX异步调用Web Service和页面中的类方法(2):处理异步调用中的异常
- JVM对异常的默认处理方案
- js构建ui的统一异常处理方案(四)
- [原]ASP.NET MVC异常处理方案
- 第八节:Task的各类Task<TResult>返回值以及通用线程的异常处理方案。
- ASP.NET MVC异常处理方案
- WebService 异常处理方案
- js构建ui的统一异常处理方案(三)
- OracleSGA异常处理方案
- SSH异常和日志处理方案
- C#:Web Service异常处理
- 服务器网络流量异常处理方案
- 异常处理方案的一个改进(兼论IE的一个局限性)