it-swarm.com.de

So lösen Sie den HTTP-Status 405 "Methode nicht zulässig" beim Aufrufen von Web Services

Ich habe eine Siluation, bei der ich auf einen SOAP Webdienst mit WSE 2.0-Sicherheit zugreifen muss. Ich habe alle generierten c # -Proxy-Proxies (die von Microsoft.Web.Services2.WebServicesClientProtocol abgeleitet sind), ich wende das Zertifikat an, aber wenn ich eine Methode anrufe, erhalte ich einen Fehler:

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)

Ich habe etwas gegoogelt und es scheint, dass dies ein Problem mit der Serverkonfiguration ist. Dieser Webservice wird jedoch von vielen Clients ohne Probleme verwendet (der Webservice wird von einer Telecom New Zealand bereitgestellt, daher muss es sein) richtig konfiguriert (ich glaube, es ist in Java geschrieben)

Kann jemand etwas Licht in dieses Problem bringen?

15
Muxa

Ok, habe herausgefunden, was das Problem war. Ich habe versucht, eine .wsdl-URL anstelle von .asmx-URL zu nennen. Doh!

18
Muxa

Ich habe festgestellt, dass WCF nicht auf IIS installiert wurde. Die Hauptsache ist, dass die .svc-Erweiterung in IIS gemappt werden muss. Siehe hier MSDN. Verwenden Sie das ServiceModelReg-Tool, um die Installation abzuschließen. Sie möchten immer überprüfen, ob WCF installiert ist und .svc in IIS zugeordnet ist, wenn Sie einen neuen Computer erhalten oder IIS neu installieren.

4
A-Dubb

Ich hatte das gleiche Problem, aber die Details waren unterschiedlich:

Die URL, die wir verwendeten, hatte nicht den Teil der Datei (.asmx). Das Aufrufen der URL in einem Browser war OK. Es funktionierte auch in einem einfachen Client, der die URL über Visual Studio festlegte. Aber es hat nicht funktioniert, die URL dynamisch zu setzen! Es gab den gleichen 405 Fehler.

Schließlich stellten wir fest, dass das Hinzufügen des Dateibereichs zur Web Service-URL das Problem gelöst hat. Möglicherweise ein .NET-Framework-Fehler?

4
Juan Calero

Sie müssen die HTTP-Aktivierung aktivieren

Wechseln Sie zu Systemsteuerung> Windows-Funktionen> Erweiterte .NET Framework 4.5-Dienste> WCF-Dienste> HTTP-Aktivierung

0
Diego Elizondo

In meinem Fall bestand das Problem darin, dass die App-Konfiguration falsch formatiert/aufgerufen wurde: In der Dienst-URL wurde "localhost" als Domänenname verwendet, der tatsächliche Hostname unterschied sich jedoch von der URL, die ich aufgerufen habe :( also habe ich das geändert "localhost" in config zu Domainname, den ich in URL verwende. Das ist alles!

0
StanislavT.

hmm verwenden die anderen Clients auch C # /. NET?

Methode nicht zulässig -> könnte dies ein REST -Dienst anstelle eines SOAP-Webdienstes sein?

0
cruizer