原文:在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处理

Codepublic 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

在ASP.NET中使用SOAP Extensions捕获WebService异常的更多相关文章

  1. 在Global.asax中 注册Application_Error事件 捕获全局异常

    参考于:https://shiyousan.com/post/635813858052755170 在ASP.NET MVC中,通过应用程序生命周期中的Application_Error事件可以捕获到 ...

  2. C++中使用soap toolkit访问webService详解

    使用Visual C++开发SOAP客户端应用  使用Visual C++开发SOAP客户端应用 简介 在本篇文章中,我们将讨论如何使用Visual C++开发一个简单的SOAP客户端应用程序,我们还 ...

  3. java 中异常处理示例并捕获完整异常内容

    public class Test { public static void main(String[] args) { try { int a = 1; int b = 0; int c = a/b ...

  4. Java处理Exception无法捕获的异常

    场景: 使用try...catch(Exception e){}来捕获异常,执行过程中线程中断或阻塞了,但是catch块中却并没有捕获到异常信息. try{ // 此处可能是调用一个远程的接口,或是调 ...

  5. 编写高质量代码改善C#程序的157个建议——建议65:总是处理未捕获的异常

    建议65:总是处理未捕获的异常 处理为捕获的异常是每个应用程序具备的基本功能,C#在APPDomain提供了UnhandledException事件来接收未捕获到的异常的通知.常见的应用如下: sta ...

  6. ASP.NET中的配置文件

    ASP.NET中的配置文件 原创 2014年10月13日 08:15:27 1199   在机房收费系统的时候曾经应用过配置文件,当时也就那么一用对配置文件了解的不是很透彻,下面就来总结一下有关配置文 ...

  7. Asp.net中web.config配置文件详解(一)

    本文摘自Asp.net中web.config配置文件详解 web.config是一个XML文件,用来储存Asp.NET Web应用程序的配置信息,包括数据库连接字符.身份安全验证等,可以出现在Asp. ...

  8. Asp.net中的web.config配置文件(转)

    最近开始学习.NET的开发,首先碰到的就是web.config的配置问题,把网上大虾的资料转发记录一下,以备不时之需. 原贴路径如下:http://blog.csdn.net/hbqhdlc/arti ...

  9. .NET Remoting 体系结构 之 在 ASP.NET 中驻留远程服务器

    迄今为止,所有服务器示例都是运行在自驻留(self-hosted)的.NET 服务器上.自驻留的服务器必 须手动启动..NET Remoting 服务器也可以在许多其他的应用程序类型中启动.在 Win ...

随机推荐

  1. 绝杀600元以下智能手机的夏新小V二代-专栏-速途网

    绝杀600元以下智能手机的夏新小V二代-专栏-速途网 绝杀600元以下智能手机的夏新小V二代

  2. ZOJ 3635 Cinema in Akiba(线段树)

    Cinema in Akiba (CIA) is a small but very popular cinema in Akihabara. Every night the cinema is ful ...

  3. Session为空的一种原因

    在维护一份比较老的代码,想改为ajax调用,然后就添加了一个一般处理程序文件,也就是以.ashx结尾的文件,一切都正常,但发现session一直为空,很奇怪 基本的代码如下: public class ...

  4. java中HashMap在多线程环境下引起CPU100%的问题解决(转)

    最近项目中出现了Tomcat占用CPU100%的情况,原以为是代码中出现死循环,后台使用jstack做了dump,发现是系统中不合理使用HashMap导致出现了死循环(注意不是死锁). 产生这个死循环 ...

  5. 图片预览插件 fancyBox

    今天给大家分享一款优秀的 jquery 弹出层展示插件 fancybox. 它除了能够展示图片之外,还能够展示 flash.iframe 内容.html 文本以及 ajax 调用.我们能够通过 css ...

  6. 【spring源代码分析】--Bean的解析与注冊

    接着上一节继续分析,DefaultBeanDefinitionDocumentReader的parseBeanDefinitions方法: protected void parseBeanDefini ...

  7. Flash-使用变形面板制作花朵

    在Flash中利用"变形"面板的"重置选取和变形"button(在变形面板右下角),能够自己主动将对象进行创造性变形地画图 步骤: (1)先导入一幅图像 (2) ...

  8. Drupal 7 电子邮件的发送设置 SMTP, Mail System, Mime Mail

    尽管Drupal自带发送email功能,可是非常多server须要SMTP验证.这个时候就须要安装 SMTP 模块. 激活 SMTP 模块 进入配置 admin/config/system/smtp ...

  9. windows phone (26) ApplicationBar应用程序栏

    原文:windows phone (26) ApplicationBar应用程序栏 在应用程序中,如果需要几个按钮或者菜单来执行一些普通的命令,就应该考虑使用ApplicationBar,因为silv ...

  10. linux下查找某个文件

    参考http://blog.csdn.net/gray13/article/details/6365654 一.通过文件名查找法: 举例说明,假设你忘记了httpd.conf这个文件在系统的哪个目录 ...