zoukankan      html  css  js  c++  java
  • 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将不向客户端显示堆栈跟踪信息

    参考文章:
    
    
    


     


  • 相关阅读:
    同步类容器和并发类容器
    T4模板生成自定义的实体类
    C# UrlEncode 编码
    PLSQL快速生成增删改查语句
    Oracle 检查星期只能是1-7的数字不能重复
    PLSQL 插入数据无响应
    C# DataTable 排序
    C# 获取程序集信息
    C# 调用WinRAR解压缩文件
    DataTable 获取一列最大值并修改
  • 原文地址:https://www.cnblogs.com/lyk831216/p/1491668.html
Copyright © 2011-2022 走看看