Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将runtimeknown属性添加到Castle Windsor中WcfFacility创建的wcf代理_C#_Wcf_Castle Windsor_Wcffacility - Fatal编程技术网

C# 将runtimeknown属性添加到Castle Windsor中WcfFacility创建的wcf代理

C# 将runtimeknown属性添加到Castle Windsor中WcfFacility创建的wcf代理,c#,wcf,castle-windsor,wcffacility,C#,Wcf,Castle Windsor,Wcffacility,我正试图创建客户端代理使用温莎城堡优秀的wcf设施。但是,在使用该工具添加自定义属性时,我需要访问OperationContextScope。我的方法在运行时失败,出现以下错误:传递给OperationContext的IContextChannel无效。必须是服务器调度通道或客户端代理通道。当代码进入using块时会发生这种情况,如下所示。任何关于如何使这项工作的建议都将不胜感激 容器设置: public class WcfClientInstaller : IWindsorInstaller

我正试图创建客户端代理使用温莎城堡优秀的wcf设施。但是,在使用该工具添加自定义属性时,我需要访问OperationContextScope。我的方法在运行时失败,出现以下错误:传递给OperationContext的IContextChannel无效。必须是服务器调度通道或客户端代理通道。当代码进入using块时会发生这种情况,如下所示。任何关于如何使这项工作的建议都将不胜感激

容器设置:

public class WcfClientInstaller : IWindsorInstaller
{
    public void Install(IWindsorContainer container, IConfigurationStore store)
    {
        container.AddFacility<WcfFacility>();
        container.Register(Component.For<IMyInterface>().AsWcfClient(new DefaultClientModel
        {
            Endpoint = WcfEndpoint.FromConfiguration("MyEndpoint"),
        }).LifestyleTransient());
    }
}
调用代理:

[Test]
public void Test()
{
    var container = new WindsorContainer();
    container.Install(new WcfClientInstaller());
    var proxy = container.Resolve<IMyInterface>();
    // Crashes here
    using (new OperationContextScope((IContextChannel)proxy))
    {
        var bmp = new BrokeredMessageProperty { CorrelationId = "someNonStaticId" };
        OperationContext.Current.OutgoingMessageProperties.Add(BrokeredMessageProperty.Name, bmp);                
    }
}

试着在IWCFDolicy实现中这样做,如下所示:Hi Phil。谢谢你的反馈!在您提供的示例中,他们正在使用wcfpolicy添加静态值。但是,我只有在收到消息时才知道该值。是否可以以某种方式将此值传递给策略?是否接收消息?那么这是某种路由器吗?不是真的,它是一种WCF服务,它从azure service bus接收消息,对数据进行一些处理,然后使用WCF将结果发布到主题。我不熟悉service bus,也不熟悉是否存在一些环境上下文,您可以从中提取一些类似于非静态ID的WCF操作上下文。然而,创建您自己的基于线程的上下文,在其中存储一个值,然后您的IWcfPolicy可以提取该值,这将是相对简单的。