在根据服务合同验证之前修改WCF服务请求

时间:2012-10-03 11:58:01

标签: wcf

我一直试图在拨打服务电话之前拦截请求。

Using WCF Extensibility at Client Side

这背后的想法是在请求中添加某些属性,以便在根据ServiceContract Schema验证请求时,请求必须显示为有效。

我按照这里的建议使用了IParameterInspector和BehaviorExtension -

Move C# WCF Extensibility code to Configuration File

然而,即使在呼叫达到 IParameterInspecter public object BeforeCall(string operationName, object[] inputs)方法之前,似乎在客户端验证了严格的请求。我想在哪里添加属性。

但就在拨打服务电话时,收到以下错误 -

  

通讯对象,   System.ServiceModel.ChannelFactory`1 [SomeService.IServiceContract]   不能用于通信,因为它处于Faulted状态。

我应该在哪里拦截服务电话,为请求添加属性。

必须确保在客户端对架构验证请求之前执行此操作。

1 个答案:

答案 0 :(得分:0)

故障通道通常是由服务为响应客户端请求而抛出的意外异常(未在合同中明确定义)引起的。 如果它发生在BeforeCall之前它可能来自不同的原因。

第一个想到的是你错误地插入了你的IParameterInspecter并且它没有通过它,你应该首先测试是否正确插入了简化的场景。

如果没有,它可能来自在消息安全的establishSecurityContext="true"定义的服务方法调用之前生成的身份验证请求,身份验证请求因意外异常而被拒绝,它会使通道出错并且您可以再也不用了。

我没有足够的信息来考虑其他可能的原因。 您应该首先检查这些内容并返回其他代码和/或配置示例以供进一步调查。