我一直试图在拨打服务电话之前拦截请求。
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状态。
我应该在哪里拦截服务电话,为请求添加属性。
必须确保在客户端对架构验证请求之前执行此操作。
答案 0 :(得分:0)
故障通道通常是由服务为响应客户端请求而抛出的意外异常(未在合同中明确定义)引起的。
如果它发生在BeforeCall
之前它可能来自不同的原因。
第一个想到的是你错误地插入了你的IParameterInspecter
并且它没有通过它,你应该首先测试是否正确插入了简化的场景。
如果没有,它可能来自在消息安全的establishSecurityContext="true"
定义的服务方法调用之前生成的身份验证请求,身份验证请求因意外异常而被拒绝,它会使通道出错并且您可以再也不用了。
我没有足够的信息来考虑其他可能的原因。 您应该首先检查这些内容并返回其他代码和/或配置示例以供进一步调查。