Клиент 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, оно сработало...