Понимание связывания httpGetEnabled и Mex

В службе WCF я удалил привязку Mex по умолчанию и установил для атрибута httpGetEnabled в поведении службы по умолчанию значение false.

С этим я понимаю, что служба не позволяет загружать WSDL. Однако существующие клиенты сервиса будут работать без проблем.

Теперь, когда я перехожу к.svc в Internet Explorer, он советует 3 вещи, которые помогут мне увидеть структуру файла.svc.

  1. Создать поведение для сервиса.
  2. В элементе serviceMetadata создайте атрибут httpGetEnabled и установите для него значение true.
  3. Создайте конечную точку привязки mex. т.е.

<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />

Теперь позвольте мне перейти к моему вопросу.

Когда я просто устанавливаю httpGetEnabled="true", я могу загрузить WSDL. Я не вижу значения mex endpoint здесь.

Каково реальное значение конечной точки mex здесь? Зачем нужно создавать конечную точку mex, когда только httpGetEnabled дает мне возможность загрузить WSDL?

1 ответ

Решение

Конечная точка Mex становится значимой, только если вы хотите использовать WS-MetadataExchange вместо WSDL для захвата метаданных службы. Вы можете включить один или другой, или оба.

AFAIK, svcutil.exe может использовать либо WSDL, либо mex, так что это не так сильно беспокоит; но у вас могут быть клиенты, которые поддерживают только один или другой.

Другие вопросы по тегам