【问题标题】:Modify WCF Service Request before it is validated against Service Contract在根据服务合同验证 WCF 服务请求之前修改它
【发布时间】:2012-10-03 20:20:19
【问题描述】:

我一直试图在进行服务调用之前拦截请求。

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], 无法用于通信,因为它处于故障状态。

我应该在哪里拦截服务调用,以向请求添加属性。

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

【问题讨论】:

    标签: wcf


    【解决方案1】:

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

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

    如果不是,它可能来自消息安全的establishSecurityContext="true" 定义的服务方法调用之前生成的身份验证请求,身份验证请求因意外异常而被拒绝,导致通道故障,您不能再用吧。

    没有足够的信息让我思考其他可能的原因。 您应该首先检查这些,然后返回其他代码和/或配置示例以进行进一步调查。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-05-07
      • 1970-01-01
      • 2014-10-18
      • 2015-04-19
      • 2019-03-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多