Возврат сервиса WCF «Метод не разрешен»

В процессе разработки моей первой службы WCF, и когда я пытаюсь ее использовать, я получаю «Метод не разрешен» без каких-либо других объяснений.

У меня есть интерфейс с ServiceContract и OperationContract:

[OperationContract] void FileUpload(UploadedFile file); 

Наряду с фактическим методом:

  public void FileUpload(UploadedFile file) {}; 

Чтобы получить доступ к Сервису, я вхожу в http: //localhost/project/myService.svc/FileUpload, но получаю ошибку «Метод не разрешен»

Я что-то упускаю?

Ваш браузер отправляет HTTP-запрос GET: убедитесь, что у вас есть атрибут WebGet для операции в контракте:

 [ServiceContract] public interface IUploadService { [WebGet()] [OperationContract] string TestGetMethod(); // This method takes no arguments, returns a string. Perfect for testing quickly with a browser. [OperationContract] void UploadFile(UploadedFile file); // This probably involves an HTTP POST request. Not so easy for a quick browser test. } 

Если вы используете [WebInvoke(Method="GET")] в методе службы, убедитесь, что вы назвали имя метода как «GET», а не «Get» или «get», поскольку оно чувствительно к регистру! У меня была такая же ошибка, и мне потребовался час, чтобы понять, что это.

Основные внутренние типы (например, byte , int , string и массивы) будут автоматически сериализованы WCF. Пользовательских classов, таких как UploadedFile, не будет.

Итак, глупый вопрос (но я должен спросить об этом …): UploadedFile помечен как [DataContract] ? Если нет, вам нужно убедиться, что это так, и что каждый из членов classа, который вы хотите отправить, помечен [DataMember].

В отличие от удаленных объектов, где маркировка classа с помощью [XmlSerializable] позволила вам сериализовать весь class, не потрудившись отметить члены, которые вы хотели сделать сериализованными, WCF требует, чтобы вы отмечали каждого члена. (Я считаю, что это меняется в .NET 3.5 SP1 …)

Огромный ресурс для разработки WCF – это то, что мы знаем в нашем магазине как «рыбная книга»: Программирование WCF-услуг Juval Lowy. В отличие от некоторых других книг WCF, которые немного сух и академичны, этот подход использует практический подход к созданию служб WCF и фактически полезен. Тщательно рекомендуется.

Похоже, вы используете неправильный адрес:

Чтобы получить доступ к Сервису, введите http: //localhost/project/myService.svc/FileUpload

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

 http://localhost/project/myService.svc 

У меня была такая же проблема уже более дня – наконец, разобрался. Спасибо @Sameh за подсказку.

Вероятно, ваш сервис работает нормально. Тестирование сообщений POST с использованием адресной строки браузера не будет работать. Вы должны использовать Fiddler для проверки сообщения POST.

Инструкции Fiddler … http://www.ehow.com/how_8788176_do-post-using-fiddler.html

Доступ к WebGet можно только из IE браузера; вы можете получить доступ к другим глаголам http, просто набрав адрес

Вы можете либо попробовать Restful service startup kit of Codeples, либо использовать скрипач, чтобы проверить ваши другие http-глаголы

вам нужно добавить в web.config

         

Мое дело: настройка службы на новом сервере. ASP.NET 4.0 не был установлен / зарегистрирован должным образом; Расширение svc не было распознано.

  • Клиент службы WCF: текст типа контента / html; charset = utf-8 ответного сообщения не соответствует типу содержимого привязки
  • Исключение JAXB: class, не известный этому контексту
  • Сообщение jQuery ajax для веб-службы
  • Как передать массив JSON в качестве параметра в URL-адресе
  • JAX-WS = Когда Apache CXF установлен, он «крадет» стандартную реализацию JDK JAX-WS по умолчанию, как ее решить?
  • Потребляйте веб-службу SOAP, не полагаясь на app.config
  • В модели веб-программирования WCF можно написать рабочий контракт с массивом параметров строки запроса (то есть с тем же именем)?
  • Как использовать Джерси как реализацию JAX-RS без web.xml?
  • Что должна вернуть служба JSON при сбое / ошибке
  • Каков правильный способ отправки файла из веб-сервиса REST клиенту?
  • Как я могу динамически переключать адреса веб-сервисов в .NET без перекомпиляции?
  • Interesting Posts

    Как я могу использовать SRT для кэширования не загружаемого жесткого диска?

    Pig Latin: загрузка нескольких файлов из диапазона дат (часть структуры каталогов)

    Проверьте, доступен ли порт на удаленной системе (без telnet)

    Включить / отключить беспроводной интерфейс в файле bat

    Проверка программной версии приложения на Android-рынке

    Сумма-подмножество с фиксированным размером подмножества

    Использование @property против геттеров и сеттеров

    Как создать пользовательские методы для использования в выражениях выражения выражения весны безопасности

    Как скрыть панель инструментов Windows 7 и панель свойств?

    Как отобразить представление списка в диалоговом окне Android Alert?

    Подписано на неподписанное преобразование в C – всегда ли оно безопасно?

    Сфера и возвращаемые значения в C ++

    Почему у этого метода Java есть два типа возврата?

    Почему глобальные и статические переменные инициализируются значениями по умолчанию?

    Модель в модальном окне в angularjs пуста

    Давайте будем гением компьютера.