在ASP.NET中使用SOAP Extensions捕获WebService异常

简介: 原文:在ASP.NET中使用SOAP Extensions捕获WebService异常Application_Error不能捕获的异常 [WebMethod] public string HelloWorld() { th...
原文: 在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的生命周期.
   

 

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

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

 
ContractedBlock.gif ExpandedBlockStart.gif 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结点中配置
 
ContractedBlock.gif ExpandedBlockStart.gif 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

目录
相关文章
|
17天前
|
开发框架 监控 .NET
C#进阶-ASP.NET WebForms调用ASMX的WebService接口
通过本文的介绍,希望您能深入理解并掌握ASP.NET WebForms中调用ASMX WebService接口的方法和技巧,并在实际项目中灵活运用这些技术,提高开发效率和应用性能。
34 5
|
6月前
|
网络协议 Java Apache
【Java】已解决java.net.HttpRetryException异常
【Java】已解决java.net.HttpRetryException异常
144 0
|
6月前
|
网络协议 Java
【Java】已解决java.net.UnknownHostException异常
【Java】已解决java.net.UnknownHostException异常
1145 0
|
5月前
|
缓存 NoSQL Java
【Azure Redis 缓存 Azure Cache For Redis】Redis出现 java.net.SocketTimeoutException: Read timed out 异常
【Azure Redis 缓存 Azure Cache For Redis】Redis出现 java.net.SocketTimeoutException: Read timed out 异常
|
5月前
|
缓存 NoSQL 网络协议
【Azure Redis 缓存】Redisson 连接 Azure Redis出现间歇性 java.net.UnknownHostException 异常
【Azure Redis 缓存】Redisson 连接 Azure Redis出现间歇性 java.net.UnknownHostException 异常
122 1
|
5月前
|
开发框架 .NET API
在 ASP.NET Core Web API 中使用异常筛选器捕获和统一处理异常
在 ASP.NET Core Web API 中使用异常筛选器捕获和统一处理异常
|
6月前
|
网络协议 Java 测试技术
【Java】已解决java.net.BindException异常
【Java】已解决java.net.BindException异常
291 0
|
6月前
|
Java 网络安全 网络架构
【Java】已解决java.net.ConnectException异常
【Java】已解决java.net.ConnectException异常
1120 0
|
6月前
|
Java
【Java】已解决java.net.MalformedURLException异常
【Java】已解决java.net.MalformedURLException异常
530 0
|
6月前
|
Java
【Java】已解决java.net.ProtocolException异常
【Java】已解决java.net.ProtocolException异常
242 0