Почему IMetadataExchange невидим? - PullRequest
1 голос
/ 06 июля 2011

Я создал службу WCF, размещенную на IIS 6 (Windows XP):

<system.serviceModel>        
    <behaviors>
      <serviceBehaviors>
        <behavior name="myServiceBehaviors">          
          <serviceMetadata httpGetEnabled="true"/>          
          <serviceDebug includeExceptionDetailInFaults="false"/>
        </behavior>
      </serviceBehaviors>
    </behaviors>    
    <services>
      <service name="Namespace.Class" behaviorConfiguration="myServiceBehaviors">                
        <endpoint  contract="IMetadataExchange" binding="mexHttpBinding" address="mex" />        
      </service>      
    </services>        
    <serviceHostingEnvironment multipleSiteBindingsEnabled="true" />
  </system.serviceModel>      

Я создал виртуальный каталог (MyVirtualFolder) в Visual Studio 2010, и когда я указываю браузеру "http://localhost/MyVirtualFolder/MyService.svc" Я получаю страницу ошибки, которая говорит мне, что я должен включить интерфейс для metadataExchange с инструкциями, как это сделать, как я должен изменить свой файл конфигурации. Я дважды проверил это, и мой конфиг равен тому, который был предложен на странице HTML.

Почему интерфейс IMetaDataExchange недоступен?

Заранее спасибо!

Ответы [ 3 ]

0 голосов
/ 06 июля 2011

Удалите address="mex" из вашей IMetadataExchange конечной точки.

Также нет фактической конечной точки для самой службы.

Если возможно, попробуйте использовать SvcConfigEditor ,Редактор конфигурации WCF (часть Windows SDK) для получения работающей службы и конфигурации клиента.

0 голосов
/ 06 июля 2011

Наконец я выяснил, в чем причина:

<service name="Namespace.Class"> указал на неправильный класс :(

0 голосов
/ 06 июля 2011

Попробуйте <serviceMetadata /> вместо <serviceMetadata httpGetEnabled="true"/>.Если вы размещаете веб-службу в IIS, у вас есть файл * .svc.Вам не нужна конечная точка для получения метаданных, удаления конечных точек, и все будет работать нормально.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...