Клиент WCF Test не может добавить службу, не может получать метаданные

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

Ошибка: невозможно получить метаданные из http://myserver/myapp. Если это служба Windows (R) Communication Foundation, к которой у вас есть доступ, убедитесь, что вы включили публикацию метаданных по указанному адресу. Для получения справки, включающей публикацию метаданных, обратитесь к документации MSDN по адресу http://go.microsoft.com/fwlink/?LinkId=65455. WSRI-метаданных Exchange URI ошибки: http://myserver/myapp Метаданные содержат ссылку, которая не может быть решена: 'http://myserver/myapp '. Удаленный сервер возвратил неожиданный ответ: (405) Метод не разрешен.   Удаленный сервер возвратил ошибку: (405) Метод не разрешен. UTTP GET URI ошибки: http://myserver/myapp Произошла ошибка при загрузке 'http://myserver/myapp '. Ошибка запроса с HTTP-статусом 403: Запрещено.

Обновление: у меня уже есть следующая конечная точка,

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

У меня также есть набор сервисов:

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

Ответ 1

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

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

Я также получил его при попытке сохранить изменения конфигурации в проекте, а затем он сказал мне сохранить/перезаписать/проигнорировать и т.д. В итоге он добавил подтип проекта "designer", и как только я удалил его, он вернулся к правильная работа.

Ответ 2

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

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

Ответ 3

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

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

Service="MyNamespace.Service1" должен читать Service="MyNamespace.MyRenamedService"

Ответ 4

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

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

Ответ 5

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

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

Ответ 6

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

Ответ 7

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

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

Ответ 8

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

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

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

Ответ 9

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