2
我發佈一個MEX端點元數據交換服務,我用下面的代碼來發現它,並獲得元數據信息WCF MEX不從主機
DiscoveryClient discoveryClient = new DiscoveryClient(new UdpDiscoveryEndpoint());
FindCriteria findCriteria = FindCriteria.CreateMetadataExchangeEndpointCriteria(ContractType);
findCriteria.Duration = TimeSpan.FromSeconds(15);
findCriteria.MaxResults = 1;// MaxResults;
FindResponse result = discoveryClient.Find(findCriteria);
discoveryClient.Close();
ServiceEndpointCollection eps = MetadataResolver.Resolve(ContractType, result.Endpoints[0].Address);
return eps[0].Binding;
包含完整的綁定信息
當我在我的客戶端中獲取元數據信息時,綁定信息(OpenTimeout
, ReceiveTimeout
和SendTimeout
)已恢復爲其默認值。
這裏是主機
<binding name="MyServiceBinding" closeTimeout="00:05:00" openTimeout="00:05:00"
receiveTimeout="23:50:00" sendTimeout="00:05:00" maxReceivedMessageSize="50000000">
<readerQuotas maxStringContentLength="50000000" maxArrayLength="50000000" />
<reliableSession ordered="true" inactivityTimeout="00:01:00" enabled="false" />
<security mode="None" />
</binding>
這裏的綁定信息是另外一個問題我已經找到了,這幾乎是我的一樣。
WCF Service Binding taking default values instead of custom values
我想知道如果我做錯了什麼,或者我誤解了元數據交換的概念。
我想要做的是發送所有必要的信息給我的客戶,以便他們可以自動配置他們自己,沒有任何硬代碼配置。
那我應該用WSDL來代替嗎? – 2011-05-12 19:13:39
@Jose Manuel Ojeda:不,這沒什麼區別; MEX和WSDL幾乎相同。沒有任何方法可以通過MEX或WSDL自動交換配置信息,例如超時。 – 2011-05-12 19:43:32
我試圖修改maxMessageLenght時只是遇到了這個問題。如果你不能發佈完整的綁定信息,這使得整個mex發佈無用,因爲你仍然必須在客戶端有一些配置信息。 – Bruno 2017-07-27 09:01:11