我一直在尝试在进行服务调用之前拦截该请求。
在客户端使用 WCF 扩展性 https://stackoverflow.com/questions/12642093/using-wcf-extensibility-at-client-side
其背后的想法是在请求中添加某些属性,以便根据 ServiceContract 架构验证请求时,请求必须显示为有效。
我按照此处的建议使用了 IParameterInspector 和 BehaviourExtension -
将 C# WCF 扩展性代码移至配置文件 https://stackoverflow.com/questions/12682535/move-c-sharp-wcf-extensibility-code-to-configuration-file
然而,即使在呼叫到达之前,服务请求似乎也在客户端进行验证参数检查器 public object BeforeCall(string operationName, object[] inputs)
方法。我打算在其中添加属性。
但就在拨打服务电话时,出现以下错误 -
通讯对象,
System.ServiceModel.ChannelFactory`1[SomeService.IServiceContract],
无法用于通信,因为它处于故障状态。
我应该在哪里拦截服务调用,以向请求添加属性。
必须确保在根据客户端的架构验证请求之前执行此操作。
出现故障的通道通常是由于服务响应客户端请求而抛出的意外异常(合同中未明确定义)造成的。
如果它发生在BeforeCall
它可能来自不同的原因。
我想到的第一个问题是您错误地插入了电源IParameterInspecter
并且它不会通过它,您应该首先使用简化的场景测试它是否正确插入。
如果不是,它可能来自在服务方法调用之前生成的身份验证请求,如establishSecurityContext="true"
消息安全性方面,身份验证请求因意外异常而被拒绝,它会导致通道出现故障,您无法再使用它。
没有足够的信息让我思考其他可能的原因。
您应该首先检查这些内容,然后返回其他代码和/或配置示例以进行进一步调查。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)