zoukankan      html  css  js  c++  java
  • 在ASP.NET中使用SOAP Extensions捕获WebService异常

    Application_Error不能捕获的异常

          [WebMethod]
            public string HelloWorld()
            {
                throw new Exception("this exption can't be handled by Application_Error Method");
                return "Hello World";
            }
    定义Application_Error将不能捕获这个异常.
    原因需要了解一下SOAP请求的在ASP.NET的生命周期.
    cc164007.fig02(en-us)   

    Process Message过程调用WebMethod时如果产生SoapException,SoapHeaderException 被序列化后,返回在SOAP <Fault>结点.

    使用SOAP extension扩展处理Process Message过程产生的异常
    我们可以SOAP Extension处理

    Code
    public class SoapExceptionHandler : System.Web.Services.Protocols.SoapExtension
        {
            
    public override void ProcessMessage(System.Web.Services.Protocols.SoapMessage message)
            {
                
    if (message.Stage == SoapMessageStage.AfterSerialize)
                {
                    
    if (message.Exception != null)
                    {
                        LogUtil.Log.Error(message.Exception.InnerException);
                    }
                }
            }

            
    public override object GetInitializer(Type serviceType)
            {
                
    return null;
            }

            
    public override object GetInitializer(
                LogicalMethodInfo methodInfo,
                SoapExtensionAttribute attribute)
            {
                
    return null;
            }

            
    public override void Initialize(object initializer) 
            {
            }
        }
    在Web.config system.web结点中配置
    Code
            <webServices>
                
    <soapExtensionTypes>
                    
    <add type="Elplan.App.SoapExceptionHandler, Elplan.App" priority="1" group="High" />
                
    </soapExtensionTypes>
            
    </webServices>

    调试:

    如果使用VS直接运行调试asmx,是不可以的.(因为...它不是一个完整的SOAP请求.)可使用WebServiceStudio.
    相关地址:http://www.codeplex.com/WebserviceStudio 

    参考文章:

    Using SOAP Extensions in ASP.NET
    Handling and Throwing Exceptions in XML Web Services
    How to create a global exception handler for a Web Service

  • 相关阅读:
    【iPhone开发】说说Xcode4中xib绑定的原理转
    转 IOS下的图片
    免证书调试Iphone程序(转)
    牛B的Python模块(转)
    6 个手机开发方面很有用的应用
    留个脚印!
    Android初学者入门PDF版
    IOS下的MVC
    android2.2源码编译-Ubuntu10.04 (X86) + android2.2 + JDK1.6
    10 款 Windows 下最佳的免费 PHP 编辑器
  • 原文地址:https://www.cnblogs.com/solo/p/1445439.html
Copyright © 2011-2022 走看看