博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
在ASP.NET中使用SOAP Extensions捕获WebService异常
阅读量:6935 次
发布时间:2019-06-27

本文共 1281 字,大约阅读时间需要 4 分钟。

原文:

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.gifExpandedBlockStart.gifCode
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.gifExpandedBlockStart.gifCode
        <webServices>
            
<soapExtensionTypes>
                
<add type="Elplan.App.SoapExceptionHandler, Elplan.App" priority="1" group="High" />
            
</soapExtensionTypes>
        
</webServices>
 

调试:

如果使用VS直接运行调试asmx,是不可以的.(因为...它不是一个完整的SOAP请求.)可使用WebServiceStudio.

相关地址: 

参考文章:

转载地址:http://bwwnl.baihongyu.com/

你可能感兴趣的文章
Linux启动界面切换:图形界面-字符界面(转)
查看>>
ORA-12154: TNS: 无法解析指定的连接标识符
查看>>
|DataDirectory|的使用
查看>>
01 背包问题 --- 待续 - -
查看>>
(转)oracle 11g安装后用户名忘记怎么办
查看>>
开源Gis简介(转)
查看>>
Linux iptables防火墙设置与NAT服务配置
查看>>
父子对等组之间的关系
查看>>
JMX操作ActiveMQ(2)
查看>>
HP-UX磁带备份错误收集
查看>>
html Frame、Iframe、Frameset 的区别 详细出处参考:http://www.jb51.net/web/22785.html
查看>>
[原]重要工具集
查看>>
Leetcode: Pow(x, n) and Summary: 负数补码总结
查看>>
Android启动画面实现
查看>>
HashMap详解
查看>>
WSHPSRS-匹克选择列表生成器-SRS(R12.2.3)
查看>>
Entity Framework 6 Recipes 2nd Edition(9-1)译->用Web Api更新单独分离的实体
查看>>
XamarinForms教程构建XamarinForms开发环境
查看>>
Entity Framework 6 Recipes 2nd Edition(10-6)译 -> TPT继承模型中使用存储过程
查看>>
Android开发之三种动画
查看>>