2010-09-21 49 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