2011-05-27 1 views
2

Я новичок в WCF. Итак, вот что: у меня две системы, одна из которых - служба wcf, а другая - клиент. Я могу проверить IP-адрес службы, а также увидеть ссылку, когда я помещаю ее в свой браузер. (Это показывает, что служба работает и работает). Howver, когда я пытаюсь запустить wcftestclient из ЦМД, это дает мне эту ошибку:Ошибка: не удается получить метаданные из http://172.16.70.125:8080/ при использовании клиента WCF для доступа к службе на другом компьютере

Ошибка: Не удается получить метаданные из http://172.16.70.125:8080/Service Если это служба Windows (R) Communication Foundation, к которым у вас есть доступ, ...

Я пробовал весь этот день, и в нем говорится то же самое. Может кто-нибудь, пожалуйста, дайте мне знать, что случилось, и как это исправить?

Спасибо, Thothathri

ответ

0

Ваша служба выставила конечную точку метаданных? Только релевантные части конфигурации включены

<services> 
    <service behaviorConfiguration="metadataBehavior" name="MyService"> 
    <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" /> 
    </service> 
</services> 
<behaviors> 
    <serviceBehaviors> 
    <behavior name="metadataBehavior"> 
     <serviceMetadata httpGetEnabled="true" /> 
    </behavior> 
    </serviceBehaviors> 
</behaviors> 
+0

Как проверить, включен ли обмен метаданными? Я действительно могу получить доступ к службе с моего локального компьютера. где я могу добавить этот код? в app.config ?? Я добавил его в app.config, и он не работал – wittythotha

+0

, вы добавляете это в файл .config вашей службы. Вы должны объединить это с тем, что у вас уже есть в вашем файле .config. В основном добавьте конечную точку IMetadataExchange к существующему , добавьте раздел , укажите свой атрибут поведения на имя вашего поведения службы. – MLF

+0

У меня нет файла .config, так как моя служба является консольным приложением. Итак, где я должен был бы установить конечную точку IMetadataExchange? – wittythotha

1

Утилита WcfTestClient зависит от того, доступен ли WSDL для этой услуги. WSDL предоставляется конечной точкой Metadata Exchange (или «mex»). Вероятно, вам не хватает этой конечной точки. Посмотрите на что-то подобное в своей конфигурации или добавьте его, если он отсутствует:

<service ... > 
    <endpoint ...(your usual endpoint for the service)... /> 
    <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" /> 
</service>