Понимание связывания httpGetEnabled и Mex
В службе WCF я удалил привязку Mex по умолчанию и установил для атрибута httpGetEnabled в поведении службы по умолчанию значение false.
С этим я понимаю, что служба не позволяет загружать WSDL. Однако существующие клиенты сервиса будут работать без проблем.
Теперь, когда я перехожу к.svc в Internet Explorer, он советует 3 вещи, которые помогут мне увидеть структуру файла.svc.
- Создать поведение для сервиса.
- В элементе serviceMetadata создайте атрибут httpGetEnabled и установите для него значение true.
- Создайте конечную точку привязки 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, так что это не так сильно беспокоит; но у вас могут быть клиенты, которые поддерживают только один или другой.