Все о WSDL vs MEX?
Я не могу открыть URL-адрес метаданных http://localhost:8082/Tasks/mex
, хотя
Я добавил файл mexHttpBinding в файле конфигурации. Можно ли просмотреть эту конечную точку MEX в браузере?
Конфигурационные файлы выглядят так:
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
Вопросы:
- Является ли MEX отличным от WSDL? Если нет, то почему мы требуем конечную точку MEX над WSDL?
- В WSDL я вижу, что информация типа WSDL отсутствует. Это по умолчанию? Могу ли я посмотреть информацию о типе в WSDL?
Ответы
Ответ 1
Aakash, добавили ли вы поведение службы с помощью <serviceMetadata> элемент? Он может быть пустым, то есть < serviceMetadata/ > , но он должен присутствовать. Определение службы должно ссылаться на поведение службы. Конфигурация. Ознакомьтесь с приведенными ниже примерами:
http://www.request-response.com/blog/PermaLink,guid,c9513d28-f580-4a33-b4e8-c15476799a9d.aspx
Ответ 2
Обратитесь serviceMetadata для получения дополнительной информации о файле конфигурации WCF.
Чтобы ответить на ваши вопросы, MEX - это новый стандарт W3C для представления информации об описании услуги; WSDL был предыдущим методом. Если вам нужно разрешить более старым клиентам получать доступ к вашей информации о описании услуги, вам может потребоваться предоставить эту информацию через WSDL.
Информация для раскрытия вашей информации описания сервиса как WSDL (httpGetEnabled) также находится в ссылке, приведенной выше.
Кроме того, попробуйте использовать wcftestclient.exe для доступа к вашей службе WCF. Он предоставляет больше функциональности и информации, чем браузер.
Ответ 3
Если вы посмотрите на эту конечную точку, вы увидите, что она выглядит как любая другая конечная точка. Там даже контракт на обслуживание (IMetadataExchange
). Вы можете посмотреть System.ServiceModel.Description.IMetadataExchange
и посмотреть, что это за контракт.