首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > Web Service >

关于WCF异常处理的有关问题

2012-12-14 
关于WCF错误处理的问题/// summary/// 得到一条数据/// /summarypublic virtual Model.Sys_Group GetM

关于WCF错误处理的问题


/// <summary>
        /// 得到一条数据
        /// </summary>
        public virtual Model.Sys_Group GetModel(Guid id)
        {
            using (Factory<ISys_Group> channel = new Factory<Interface.ISys_Group>())
            {
                ISys_Group interfaceChannel = channel.CreateChannel();
                return interfaceChannel.GetModel(id);
            }
        }


这是一个读取WCF服务的方法,Factory是对WCF服务的封装。现在我想进行错误处理,但是由于这种方法很多,不可能一个个方法去加Try/Catch,我想是在Global的Application_Error里面读错误,这些都不是问题,我们知道WCF的错误包括FaultException跟Exception,当然还有其他的,我只是想关心FaultException,也就是服务端抛出的程序异常,但是我发现在Global里面用Server.GetLastError()取到的错误永远都是Exception(通信对象 System.ServiceModel.Channels.ServiceChannel 无法用于通信,因为其处于“出错”状态.),就是WCF抛出的通道错误,那个FaultException被覆盖掉了,不知道有没有什么办法在Global里面取到FaultException,而不是默认抛出的通道错误。
说明:WCF本身是没有问题的,我只是想寻求一个比较简便的WCF异常处理办法,在不改变调用方法的情况下。
[解决办法]
这个应该能解决你的问题:

Catching all FaultException in a asp.net application
http://ingig.net/weblog/2010/04/23/catching-all-faultexception-in-a-aspnet-appli/
[解决办法]
引用:
这个应该能解决你的问题:

Catching all FaultException in a asp.net application
http://ingig.net/weblog/2010/04/23/catching-all-faultexception-in-a-aspnet-appli/


谢谢你的回答,我刚才描述里面说了,在Global里面根本取不到FaultException,在那段代码里面会连续抛出2个错误,一个就是FaultException,另外紧接着就抛出:通信对象 System.ServiceModel.Channels.ServiceChannel 无法用于通信,因为其处于“出错”状态。 这个通道错误了,中间不会调到Global。所以在Global里面取到的永远都是后面那个错误。

热点排行