WCF +企业图书馆 +验证错误
我试图捕获服务的 ValidationFault
异常,并返回一个 MyClass
实例,其属性 Message 填充了当我的客户端调用我的其中一个时由 EntLib 提供的验证错误没有正确参数的服务方法(我不能使用复杂类型)。
我尝试实现两个接口来完成此任务:IParameterInspector 和 IOperationInvoker。问题是在调用方法 BeforeCall
后(IParameterInspector
接口),EntLib 抛出 ValidationFault
异常,但我无法捕获它并且我的代码未到达 IOperationInvoker
类的 Invoke 方法,因此我无法将返回值替换为 MyClass
的实例。
请记住,我的客户端不是基于 .NET 平台,并且那里没有 catch(FaultException
ex) 之类的东西。这就是为什么我必须在服务响应中使用默认对象。
我很感激你的帮助。
I am trying to catch the ValidationFault
exceptions of my service and return a instance of MyClass
with the property Message filled with the validation error provided by EntLib when my client calls one of my service methods without the correct parameters (I can't use complex types).
I tried to implement two interfaces to accomplish this task: IParameterInspector
and IOperationInvoker
. The problem is after the method BeforeCall
is called (of the IParameterInspector
interface), EntLib throws the ValidationFault
exception but I can't catch it and my code doesn't reach the Invoke method of my IOperationInvoker
class and because of that I can't replace the return value with a instance of MyClass
.
Remember, my client is not based on .NET platform and there's no such thing as catch(FaultException<ValidationFault>
ex) there. That's why I MUST work with a default object on my service responses.
I appreciate the help.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您可以使用类似于 Enterprise 的 IErrorHandler 实现吗库的WCF ExceptionShielding?基本上捕获所有异常,如果它是
FaultException
,则将 ValidationFault 转换为您的自定义消息并返回它。看起来 ProvideFault 的输出是一条消息,因此您可以返回一条消息而不是错误。此帖子似乎给出方法。
Can you use an IErrorHandler implementation similar to Enterprise Library's WCF ExceptionShielding? Basically catch all exceptions and if it's a
FaultException<ValidationFault>
then convert the ValidationFault to your custom message and return it.It looks like the output of ProvideFault is a Message so you could return a message instead of a fault. This posting seems to give the approach.