2010-09-21 24 views
2

我有一个WCF服务,它有多个客户端连接到。WCF从web.config文件读取端点行为

我想要做的是为WCF服务消耗的动态创建客户端。

通过继承ServiceFactory<TChannel>类创建客户端已经完成并且非常简单。我正在努力的是如何从web.config文件中读取端点行为并将它们添加到客户端?

代码文件

BasicHttpBinding binding = new BasicHttpBinding(bindingConfigName); 
EndpointAddress endpoint = new EndpointAddress(endpointUrl); 
ChannelFactory<IShoppingSoap> clientEndpoint = new ChannelFactory<IShoppingSoap>(binding, endpoint); 

base.Endpoint.Behaviors.Add(*Get the behavior from the config file*); 
return base.CreateChannel(); 

Web.config文件:

<behaviors> 
    <endpointBehaviors> 
     <behavior name="EndpointBehaviour_GmCustom"> 
     <dataContractSerializer maxItemsInObjectGraph="2147483646" /> 
     <behavior> 
    </endpointBehaviors> 
</behaviors> 
+0

如果您发布的代码或XML,** **请在高亮文本编辑器的线,然后点击“代码”按钮(101 010)在编辑器工具栏上进行恰当的格式化和语法突出显示! – 2010-09-21 11:16:26

+0

尽管您可以从客户端上的配置文件加载行为,但我还没有找到在服务端执行相同操作的方法。 – flayn 2010-09-22 09:45:35

回答

1

找到了解决办法..我想..你必须去通过每个操作都必须在终端和改变maxItemsInObjectGraph那里。

foreach (OperationDescription operation in base.Endpoint.Contract.Operations)  
{  
operation.Behaviors.Find<DataContractSerializerOperationBehavior>().MaxItemsInObjectGraph = 2147483646;      
} 

发现这里的解决方案

http://www.lapathy.com/home/2009/9/30/programmatically-setting-maxitemsinobjectgraph-in-wcf.html

+2

这不会从配置文件加载行为。 – flayn 2010-09-22 09:44:39

+0

它允许你改变从配置文件读取的配置。我想添加这种行为,并改变maxItemsInObjectGraph,我找不到,除非我从配置文件读取或执行上述逻辑。 – Geek 2010-10-12 11:39:54

+0

什么是基地?不使用ConfigurationManager从配置文件读取行为? – Kiquenet 2014-10-27 10:46:03