gpt4 book ai didi

wcf - WCF 中的全局错误处理 - 但返回自定义消息

转载 作者:行者123 更新时间:2023-12-03 08:01:10 26 4
gpt4 key购买 nike

我想在我的 WCF 应用程序中提供全局错误处理,并且我知道我可以实现我的 IErrorHandler,例如:

http://www.remondo.net/wcf-global-exception-handling-attribute-and-ierrorhandler/
http://www.codeproject.com/Articles/26320/WCF-Error-Handling-and-Fault-Conversion
http://www.haveyougotwoods.ca/2009/06/24/creating-a-global-error-handler-in-wcf

但是,我真正想做的是“处理”异常,不仅仅是通过记录或抛出错误异常,而是通过将自定义消息传回给调用者。我们已经使用自定义消息来返回与业务相关的消息(如验证错误或警告)。

在非常粗略的伪代码中,我会在这样的 try-catch block 中执行此操作
public MyResponseDto CallMyService(MyRequestDto request)
{
...
try
responseDto = blah blah blah
catch (Exception ex)
responseDto.ClientMessage.Description = ex.Messaeg
finally
return responseDto;
}

我的问题是 - 我怎样才能在我的全局处理程序中做到这一点?它将如何访问“ClientMessage”?

我的直觉是我需要使用属性然后反射来访问我的服务内部成员???但是如何将它分配回我的响应消息对象?

谢谢!

最佳答案

仅仅晚了一年左右,但对于那些可能会发现你的问题的人......

IErrorHandler 接口(interface)中的 ProvideFault 方法的签名如下所示:

public void ProvideFault(Exception error, MessageVersion version, ref Message fault)

最后一个参数是您要查找的参数。 Message 类有一个带有很多重载的静态方法 CreateMessage()。我们这样使用它:
fault = Message.CreateMessage(version, "", new CustomErrorMessageDto("some error message"), new DataContractJsonSerializer(typeof(CustomErrorMessageDto)));

这允许我们为客户端提供一个序列化为 Json 的自定义 DTO。 (请注意,我们正在从我们的服务返回一个 Stream 对象,以便能够返回像 Json 这样的自定义格式。)

关于wcf - WCF 中的全局错误处理 - 但返回自定义消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11994197/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com