Как определить статус HTTP 405 "Метод не разрешен" при вызове веб-служб
У меня есть стимул, где мне нужен доступ к веб-сервису SOAP с безопасностью WSE 2.0. У меня есть все сгенерированные прокси-серверы C# (полученные из Microsoft.Web.Services2.WebServicesClientProtocol), я применяю сертификат, но когда я вызываю метод, я получаю ошибку:
System.Net.WebException : The request failed with HTTP status 405: Method Not Allowed.
at System.Web.Services.Protocols.SoapHttpClientProtocol.ReadResponse(SoapClientMessage message, WebResponse response, Stream responseStream, Boolean asyncCall)
at System.Web.Services.Protocols.SoapHttpClientProtocol.Invoke(String methodName, Object[] parameters)
Я немного погуглил, и похоже, что это проблема конфигурации сервера. Однако этот веб-сервис используется многими клиентами без каких-либо проблем (веб-сервис предоставляется Telecom New Zealand, поэтому он должен быть настроен правильно. Я считаю, что он написан на Java)
Кто-нибудь может пролить свет на этот вопрос?
6 ответов
Хорошо, нашел, в чем проблема. Я пытался вызвать URL-адрес.wsdl вместо URL-адреса.asmx. Doh!
Я обнаружил, что это связано с тем, что WCF не установлен на IIS. Главное, чтобы расширение.svc было отображено в IIS. См. MSDN здесь. Используйте инструмент ServiceModelReg для завершения установки. Вы всегда будете хотеть проверять, что WCF установлен и.svc отображается в IIS каждый раз, когда вы получаете новую машину или переустанавливаете IIS.
У меня была та же проблема, но детали были разные:
У URL, который мы использовали, не было части файла (.asmx). Вызов URL в браузере был в порядке. Это также работало в простом клиенте, устанавливая URL через Visual Studio. Но это не сработало при установке URL-адреса динамически! Это дало ту же ошибку 405.
Наконец, мы обнаружили, что добавление файловой части в URL веб-службы решило проблему. Может быть.NET Framework ошибка?
Вам нужно включить активацию HTTP
Перейдите в Панель управления> Функции Windows > .NET Framework 4.5 Advanced Services > Службы WCF> HTTP-активация
В моем случае проблема заключалась в том, что конфиг приложения был неправильно сформирован / вызван: в конфиге URL службы использовал "localhost" в качестве имени домена, но реальное имя хоста отличалось от URL-адреса, который я назвал:(, поэтому я изменил "localhost" в конфигурации на доменное имя, которое я использую в URL. Вот и все!
Хм, эти другие клиенты тоже используют C#/.NET?
Метод не разрешен -> это может быть служба REST вместо веб-службы SOAP?
MethodNotAllowedEquivalent to HTTP status 405. MethodNotAllowed указывает, что метод запроса (POST или GET) не разрешен для запрошенного ресурса.
Проблема в том, что в вашей точке входа uri не является полным или неправильным адресом wcf - .scv Проверьте правильность вашего uri proxy.enpoint или wcf client.enpoint.