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

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


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

时间: 2024-11-05 06:14:05

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

问题:ASP.NET 中DataGrid.无法绑定从webservice传过来的数据。

问题描述 目标:ASP调用webservice接口,得到一个arraylist,然后显示在页面中其中arraylist中的元素是在webservice一方定义好的class,有两个属性name/age代码:通过webservice得到myArrayList后DisplayDataGrid.datasource=myArrayList;DisplayDataGrid.DataBinding();错误信息:DataGridwithid'DisplayDataGrid'couldnotautomati

asp.net 中WinForm出现无法处理的异常解决办法

,然后进行处理,但是这段代码中用到了BeginInvoke的语句块,而我使用了匿名方法,那么在匿名方法中的异常,外面是捕捉不到的.所以会出现无法处理的异常情况,正确的代码应该这样:  代码如下 复制代码 this.BeginInvoke(new MethodInvoker(delegate() {     bool flag = false;     try     {         flag = service.Authentication();//此处可能造成异常         if (

asp.net中 GET/POST/SOAP方式调用WebService实现方法

GET与POST区别 HTTP 定义了与服务器交互的不同方法,最基本的方法是 GET 和 POST(Ajax开发,关心的只有GET请求和POST请求). GET与POST方法有以下区别: (1)   在客户端,Get方式在通过URL提交数据,数据在URL中可以看到:POST方式,数据放置在HTML HEADER内提交. (2)   GET方式提交的数据最多只能有1024字节,而POST则没有此限制. (3)   安全性问题.正如在(1)中提到,使用 Get 的时候,参数会显示在地址栏上,而 Po

在 ASP.NET 中执行 URL 重写

asp.net|执行 Scott Mitchell 4GuysFromRolla.com 适用范围: Microsoft ASP.NET 摘要:介绍如何使用 Microsoft ASP.NET 执行动态 URL 重写.URL 重写是截取传入 Web 请求并自动将请求重定向到其他 URL 的过程.讨论实现 URL 重写的各种技术,并介绍执行 URL 重写的一些实际情况. 下载本文的源代码. 本页内容 引言 URL 重写的常见用法 请求到达 IIS 时将会发生什么情况 实现 URL 重写 构建 UR

ASP.NET中JSON的序列化和反序列化

导读:JSON是专门为浏览器中的网页上运行的JavaScript代码而设计的一种数据格式.在网站应用中使用JSON的场景越来越多,本文介绍 ASP.NET中JSON的序列化和反序列化,主要对JSON的简单介绍,ASP.NET如何序列化和反序列化的处理,在序列化和反序列化对日期时间.集合.字典的处理. 一.JSON简介 JSON(JavaScript Object Notation,JavaScript对象表示法)是一种轻量级的数据交换格式. JSON是"名值对"的集合.结构由大括号'{

在ASP.NET中防止注入攻击[翻译]

asp.net|攻击 出处: MSDN翻译:云中城 BLOG 应用范围: ASP.NET vertion 1.1 ASP.NET vertion 2.0   概要: 文本主要介绍如何校验用户输入从而防止注入式攻击.校验用户输入是非常必要的,几乎所有程序级的攻击都包含恶意输入的手段. 你应该校验包括字段,查询字串参数,Cookie等一切用户输入项来保护你的程序免受注入攻击.你得假设所有的用户输入都是恶意的,确保在服务器端对所有的用户输入进行校验.使用基于客户端的验证可以减少页面的住返次数,改进性能

在ASP.NET中防止注入攻击

asp.net|攻击 目的: 对输入的字串长度,范围,格式和类型进行约束. 在开发ASP.NET程序时使用请求验证防止注入攻击. 使用ASP.NET验证控件进行输入验证. 对不安全的输出编码. 使用命令参数集模式防止注入攻击. 防止错误的详细信息被返回到客户端. 概述 : 你应该在程序中验证所有的不信任输入.你应该假定所有的用户输入都是非法的.用户可以在应用程序中提供表单字段,查询字串,客户端cookies和浏览器环境值比如用户代理字串和IP地址等. 弱输入校验通常为注入攻击提供了机会.下面是常

在 ASP.NET 中实现 Page Controller

asp.net 您要在 ASP.NET 中构建 Web 应用程序,您希望通过使用内置的 Page Controller(页面控制器)来利用 ASP.NET 的事件驱动特性. 实现策略 默认情况下,Page Controller 模式中所描述的概念是在 ASP.NET 中实现的.ASP.NET 页面框架实现这些概念所采取的方式使得在客户端上捕获事件.将其传输到服务器并调用适当方法这一系列操作的基本机制是自动进行的,并且对实现者来说是不可见的.页面控制器是可扩展的,因为它会在生命周期的特定点上公开各

在ASP.NET中实现Url Rewriting

asp.net 概要 分析如何使用微软提供的ASP.NET来对动态产生的URL地址进行网址重写. 网址重写是实现一种截取网址请求并将其进行处理后重新指向到一个指定的网址的过程.作者本人在对各种实现网址重写的技术进行研究和探讨后得出的经验和方法,希望能对您有所帮助. 内容简介 稍微花点时间看一看你做的网站里头的URL地址,你看到类似这样的地址吗http://yoursite.com/info/dispEmployeeInfo.aspx?EmpID=459-099&type=summary ?也许你