2012-02-02 1 views
10

Может ли кто-нибудь сказать мне, почему я получаю эту ошибку при попытке добавить мой сервис?WCF Test Клиент не может добавить услугу, не может получить метаданные

Error: Cannot obtain Metadata from http://myserver/myapp . If this is a Windows (R) Communication Foundation service to which you have access, please check that you have enabled metadata publishing at the specified address. For help enabling metadata publishing, please refer to the MSDN documentation at http://go.microsoft.com/fwlink/?LinkId=65455 . WS-Metadata Exchange Error URI: http://myserver/myapp Metadata contains a reference that cannot be resolved: ' http://myserver/myapp '. The remote server returned an unexpected response: (405) Method Not Allowed. The remote server returned an error: (405) Method Not Allowed.HTTP GET Error URI: http://myserver/myapp There was an error downloading ' http://myserver/myapp '. The request failed with HTTP status 403: Forbidden.

Update: У меня есть следующая конечная точка уже,

<endpoint address="mex" 
      binding="mexHttpBinding" 
      name="Metadata" 
      contract="IMetadataExchange" /> 

У меня также есть поведение службы установки:

<serviceBehaviors> 
    <behavior name="myBehavior"> 
     <serviceMetadata httpGetEnabled="true" /> 
     <serviceDebug includeExceptionDetailInFaults="false" /> 
    </behavior> 
    </serviceBehaviors> 
+0

Постарайтесь следить за видео из ссылки, которую я опубликовал. Они работали для меня, когда у меня была такая же ошибка. –

ответ

5

Я понял это. Я использовал абсолютный путь на одном из моих конечных точек, и у меня было больше одного. Я изменил его на относительный путь, а затем все сработало.

Кроме того, это может произойти, если ваша служба не работает и может не иметь ничего общего с метаданными. Если у вас есть ConfigurationErrorsException, вы увидите этот результат.

Я также получил его при попытке сохранить изменения конфигурации в проекте, а затем он сказал мне, чтобы сохранить/перезаписать/проигнорировать и т. Д. Это привело к добавлению подтипа проекта «дизайнер», и как только я удалил его, он вернулся для правильной работы.

0

Если добавление конечных точек метаданных не является вашей проблемой. Проверьте подробности в сообщении об ошибке. У меня была недостающая библиотека; «Не удалось загрузить файл или сборку *».

мне нужно изменить ссылку на Copy Local = True

0

Я новичок в WCF и только что получил проект передал мне с WCF услуг внутри. У меня были проблемы с использованием тестового клиента WCF в VS2010 на Win7. После всех изменений конфигурации в этой статье и других я все еще получал подобные ошибки.

Итак, я сдался и начал читать на WCF. Здесь я обнаружил, что VS должен запускаться как администратор. Вот статья: Getting Started Tutorial WCF Оказывается, мне нужно запустить VS2010 с проверкой «Запуск от имени администратора». Это устранило проблему, и я смог протестировать службы WCF в VS2010. Я отправляю этот ответ на других, смотрю «Запуск от имени администратора».

7

Это также может произойти при попытке вернуть пользовательский объект класса из одной из функций, и эта функция не имеет атрибута [DataContract] в объявлении класса. WCF can not выяснить, какой тип вашего возвращения, чтобы он выдавал стандартное сообщение.

[Serializable] 
[DataContract] 
public class ServiceResult 
{ 
    .... 
} 
+0

Несмотря на то, что в общем сообщении говорится, что он не может найти метаданные, я попытался удалить некоторые операции OperationContracts, и он сработал. Оказывается, у меня был DataMember, который унаследовал от Dictionary, что вызвало эту проблему. Благодарю. – Andrew

+0

+ 5000 от меня, спасибо за ваше решение: На самом деле у меня было одно свойство только для чтения в моих классах сущностей, и только из-за того, что одно единственное свойство метаданных только для чтения не обменивается, после того, как маркировка всех вещей Class с [DataContract] и свойства с помощью [DataMember] и исключая это свойство только для чтения. Мне хорошо идти - спасибо –

0

Несколько раз не нужно ничего делать с метаданными или настройками; вместо этого мы можем просто использовать 127.0.0.1 вместо http: \ localhost \

6

У меня была эта проблема, получается, что когда я переименовал файл .svc, ссылка на него не была переименована из Service1.svc. Запустите широкомасштабный поиск проекта и замените .Service1 своим новым именем.

<%@ ServiceHost Language="C#" Debug="true" Service="MyNamespace.Service1" CodeBehind="MyRenamedService.svc.cs" %> 

Service="MyNamespace.Service1" следует читать Service="MyNamespace.MyRenamedService"

+0

У меня была такая же проблема. –

+0

Моя проблема тоже - спасибо! – Ben

0

я обнаружил, что у меня была такая же ошибка из-за DataContract, что я использовал, что унаследовал от словаря.Правильная настройка DataContract должна быть следующей:

[CollectionDataContract(Name = "AdditionalProperties", 
          ItemName = "Property", 
          KeyName = "Key", 
          ValueName = "Value")] 
public class AdditionalProperties : Dictionary<string, string> 
{ 
} 
0

Это мой опыт по этому сообщению об ошибке, может быть полезен другим. Мой сервис WCF отлично работает на сервере Windows 2008. Я скопировал то же самое решение для машины Dev, выбранный файл .svc из решения, чтобы клиент тестового тестирования WCF мог быть выскочен.

тест WCF клиент открыл с ошибками не может получить метаданные, сборка не может быть загружена и т.д.

Ключ, первый пинок службы (http://localhost:port/Service), то только попробовать тестовый клиент WCF.

0

В моем случае я не включил BindingParams.AllowHttpGet. Когда это было установлено в true, это сработало ...

Смежные вопросы