メタデータ交換用の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サービスバインディング
何か間違ったことをしているのか、メタデータ交換の概念を誤解しているのか知りたいのですが。
私がやろうとしているのは、クライアントに必要なすべての情報を送信して、クライアントが自分で自動構成できるようにし、ハードコード構成がないようにすることです。