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将不向客户端显示堆栈跟踪信息

    参考文章:
    
    
    


     


  • 相关阅读:
    去掉谷歌浏览器下input框自动填充的背景色
    ajax请求中动态显示问题
    Array对象的方法有
    请求页面的方法
    IE浏览器checkbox的样式问题
    property、classmethod和staticmethod总结
    面向对象和类
    内置函数补充map、reduce和filter等
    python实现控制台的进度条功能
    python常见内置函数
  • 原文地址:https://www.cnblogs.com/lyk831216/p/1491668.html
Copyright © 2011-2022 走看看