WCF mex не содержит полную информацию о привязке от хоста - PullRequest
2 голосов
/ 12 мая 2011

Я публикую сервис с конечной точкой 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 принимает значения по умолчанию вместо пользовательских значений

Я хотел бы знать, делаю ли я что-то неправильно или неправильно понял концепцию обмена метаданными.

То, что я пытаюсь сделать, это отправить всю информацию, необходимую моим клиентам, чтобы они могли автоматически настраивать себя и не иметь никакой конфигурации жесткого кода.

1 Ответ

4 голосов
/ 12 мая 2011

Не думаю, что вы делаете что-то не так - вы просто ожидаете слишком многого от обмена метаданными.

Цель MEX - иметь возможность программно обнаруживать новые сервисы и создавать клиентские прокси для этих сервисов. Для этого есть WSDL - в основном все, что содержится в WSDL, является частью обмена метаданными:

  • договор на обслуживание / способы обслуживания
  • параметры, необходимые для этих методов обслуживания
  • объявления типов данных в схеме XML для используемых типов данных
  • дополнительная информация, относящаяся к сервису, например, используемые привязки и т. Д.

Но MEX не содержит все специфические настройки конфигурации WCF - это то, что вы обнаружили. MEX создаст функционирующий прокси-сервер на стороне клиента, но никогда не собирался передавать все параметры конфигурации с сервера на клиент. Вам нужно будет вручную написать это на стороне клиента.

...