关于WCF异常处理的有关问题
关于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/
[解决办法]谢谢你的回答,我刚才描述里面说了,在Global里面根本取不到FaultException,在那段代码里面会连续抛出2个错误,一个就是FaultException,另外紧接着就抛出:通信对象 System.ServiceModel.Channels.ServiceChannel 无法用于通信,因为其处于“出错”状态。 这个通道错误了,中间不会调到Global。所以在Global里面取到的永远都是后面那个错误。