在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

目录
相关文章
在使用SSH+Spring开发webservice ,报的一些异常及处理方法
在使用SSH+Spring开发webservice ,报的一些异常及处理方法
201 0
在使用SSH+Spring开发webservice ,报的一些异常及处理方法
|
Java
WebService常见异常(一)
WebService常见异常(一)
514 0
|
.NET 中间件 开发框架
ASP.NET Core 异常和错误处理 - ASP.NET Core 基础教程 - 简单教程,简单编程
原文:ASP.NET Core 异常和错误处理 - ASP.NET Core 基础教程 - 简单教程,简单编程 ASP.NET Core 异常和错误处理 上一章节中,我们学习了 ASP.
1247 0
|
监控 .NET Java
asp.Net Core免费开源分布式异常日志收集框架Exceptionless安装配置以及简单使用图文教程
最近在学习张善友老师的NanoFabric 框架的时了解到Exceptionless : https://exceptionless.com/ !因此学习了一下这个开源框架!下面对Exceptionless的学习做下笔记! Exceptionless是什么?能做什么呢? “Exceptionless”这个词的定义是:没有异常。
1841 0
|
前端开发 .NET 开发框架
Asp.net MVC Session过期异常的处理
对于用户登录后将数据存储到session中,但是对于session过期引发的异常,会导致很多程序崩溃,或数据不对。所以正对于session过期处理,势在必行。 1.在一些数据持久化的操作中,我们会使用一些session中的数据,向后台进行数据持久化,但是如果session中没有数据的话,会出现很多意想不到的错误。
1228 0
|
前端开发 .NET 开发框架
asp.net mvc HandleErrorAttribute 异常错误处理 无效!
系统未知bug,代码没有深究。  现象:filters.Add(new HandleErrorAttribute()); 使用了全局的异常处理过滤。 HandleErrorAttribute 核心代码: public virtual void OnException(ExceptionC...
1079 0
|
前端开发 .NET
ASP.NET MVC控制器里捕获视图的错误验证信息(ErrorMessage)
ViewModel类: /// /// 评论用验证视图 /// public partial class VCreateShopComment { [Required(AllowEmptyStrings = false...
838 0
|
.NET 测试技术
【转】asp.net 利用Global.asax 捕获整个解决方案中的异常错误
之前做项目的时候都是在每个页面中处理这不同的异常信息,一个页面数下来,很多个try{}catch{}语句块,令整个代码结构有些不够美观。             今天看到一篇帖子,是关于利用全局应用程序类来帮忙获取异常信息,利用 server.Transfer('''')指定接受错误的页面;加上在接受错误页面中利用 server.GetLastError() 获取前一个异常源。
828 0
|
3月前
|
开发框架 前端开发 .NET
ASP.NET CORE 3.1 MVC“指定的网络名不再可用\企图在不存在的网络连接上进行操作”的问题解决过程
ASP.NET CORE 3.1 MVC“指定的网络名不再可用\企图在不存在的网络连接上进行操作”的问题解决过程
38 0