WCF и IIS 6 - WSDL не выставляется - PullRequest
3 голосов
/ 04 августа 2009

Я разработал приложение ASP.NET, которое включает службу WCF. Эта услуга должна использоваться сторонними приложениями. Этот сервис хорошо работал во время тестирования в моей среде разработки. Моя среда разработки использует IIS 7.0 на Windows 7 RC 1. Однако я не могу использовать службу, когда она находится в моей рабочей среде. Моя промежуточная / производственная среда - это среда Windows Server 2003, IIS 6.

Когда я пытаюсь сослаться на службу, когда она находится в среде IIS 6, я получаю сообщение об ошибке:

Ошибка: невозможно получить метаданные ...

Интересно, я заметил небольшую, но я считаю, важную разницу в тестировании промежуточных / производственных сред.

В моей тестовой среде я заметил, что могу получить доступ к странице «Сервис» через URL-адрес со следующим шаблоном:

http://localhost/MyApp/services/myService.svc

Я также заметил, что в моей тестовой среде я могу видеть информацию WSDL, если посещаю URL со следующим шаблоном:

http://localhost/MyApp/services/myService.svc?wsdl

Однако в моей рабочей среде я не вижу информации WSDL. Как ни странно, я могу видеть страницу службы, хотя.

Вот параметры конфигурации, связанные с моими службами в моей производственной среде.

<system.serviceModel>
  <behaviors>
    <serviceBehaviors>
      <behavior name="myServiceBehavior">
        <serviceMetadata httpGetEnabled="true" />
        <serviceDebug includeExceptionDetailInFaults="false" />
      </behavior>
    </serviceBehaviors>
  </behaviors>

  <serviceHostingEnvironment aspNetCompatibilityEnabled="true"/>
  <services>
    <service behaviorConfiguration="myServiceBehavior" name="myService">
      <endpoint address="" binding="basicHttpBinding" contract="myService" />
      <endpoint address="mex" binding="mexHttpBinding" 
        contract="IMetadataExchange" />
    </service>
  </services>
</system.serviceModel>

Почему я могу видеть страницу «Служба», а не страницу WSDL в среде Windows Server 2003 IIS 6.0?

Спасибо!

Ответы [ 2 ]

2 голосов
/ 04 августа 2009

Вы включили обмен метаданными?

    <serviceMetadata httpGetEnabled = "true"/>

Определили ли вы конечную точку обмена метаданными

    <endpoint address="mex" binding="mexHttpBinding" bindingConfiguration=""
      name="mexendpoint" contract="IMetadataExchange" />
1 голос
/ 04 августа 2009

Чтобы добавить к Ширазу ответ, в следующей статье MSDN достаточно подробно описаны метаданные службы публикации:

Публикация конечных точек метаданных (библиотека MSDN)

...