Как предоставить конечную точку метаданных WCF4 в приложении ASP.NET MVC 2 - PullRequest
0 голосов
/ 15 сентября 2010

У меня есть приложение ASP.NET MVC 2, в котором определена служба WCF (файл .svc, использующий службу из другого проекта).Раздел WCF web.config выглядит следующим образом:

<system.serviceModel>
<behaviors>
  <endpointBehaviors>
    <behavior name="RecordServiceAspNetAjaxBehavior">
      <enableWebScript />
    </behavior>
  </endpointBehaviors>
  <serviceBehaviors>
    <behavior name="HttpGetEnabledBehaviors" >
      <!-- Add the following element to your service behavior configuration. -->
        <serviceMetadata httpGetEnabled="true" />
    </behavior>
  </serviceBehaviors>
</behaviors>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true"
  multipleSiteBindingsEnabled="true" />
<services>
  <service name="RecordService" behaviorConfiguration="HttpGetEnabledBehaviors">
    <endpoint address="" behaviorConfiguration="RecordServiceAspNetAjaxBehavior"
      binding="webHttpBinding" contract="RecordService" />
    <endpoint contract="IMetadataExchange" binding="mexHttpBinding" address="mex" />
  </service>
</services>   

Проблема в том, что после открытия RecordService.svc в браузере я по-прежнему получаю «Публикация метаданных для этой службы в настоящее время отключена».сообщение ... как включить wsdl / mex?

Ответы [ 3 ]

1 голос
/ 15 сентября 2010

WebHttpBinding не создает WSDL: http://social.msdn.microsoft.com/forums/en-US/wcf/thread/76757ad7-1877-4f62-b80f-74e577aaeacc

Попробуйте добавить вторую конечную точку службы с BasicHttpBinding и использовать ее для WSDL.

0 голосов
/ 15 сентября 2010

Ваша конфигурация не используется вообще.Вместо этого используется конечная точка SOAP по умолчанию.Страница, которую вы видите, является страницей по умолчанию для службы на основе SOAP и говорит, что в вашей службе не включены метаданные.Но вам не нужен сервис на основе SOAP.Ваша конфигурация не определяет конечную точку SOAP, она определяет конечную точку REST JSON.Причина, скорее всего, заключается в атрибуте имени элемента службы и атрибута контракта первого элемента конечной точки.Вы должны использовать полное имя (с пространствами имен) службы и полное имя контракта.Проверьте ваш файл .svc.Он должен уже указывать на тип вашего сервиса из другой сборки.

0 голосов
/ 15 сентября 2010

WSDL является частью спецификации SOAP.Поскольку вы не представляете привязку SOAP, WSDL нет.Вы все еще можете использовать mexHttpBinding .Прочитайте этот пост для получения дополнительной информации.

...