2008-09-30 14 views
15

Mam siluację, w której potrzebuję uzyskać dostęp do usługi sieciowej SOAP z zabezpieczeniami WSE 2.0. Mam wszystkie wygenerowane C# proxy (wywodzące się z Microsoft.Web.Services2.WebServicesClientProtocol), I 'm stosujące certyfikat ale kiedy wywołać metodę pojawia się błąd:Jak rozwiązać stan HTTP 405 "Metoda niedozwolona" podczas wywoływania usług WWW

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) 

mam wykonałem trochę googlowania i wygląda na to, że jest to problem z konfiguracją serwera. Jednak ta usługa sieciowa jest używana przez wielu klientów bez żadnego problemu (usługa sieciowa jest świadczona przez Telecom w Nowej Zelandii, więc musi być poprawnie skonfigurowana, wierzę, że jest napisana w Javie)

Czy ktoś może rzucić trochę światła na to kwestia?

Odpowiedz

18

Ok, znalazłem problem. Próbowałem wywołać adres URL .wsdl zamiast adresu URL .asmx. Doh!

+0

i próbowałem zadzwonić bez nazwy usługi (x.asmx), zostawiłem adres URL tylko z katalogiem podstawowym, dziękuję – mkb

0

hmm są inni klienci również używający C#/.NET?

Metoda niedozwolona -> czy może to być usługa REST, zamiast usługi sieciowej SOAP?

+0

nie wiem, czy othe rclients są również za pomocą .NET. Sprawdzi jest to usługa SOAP. – Muxa

+0

Jeśli proxy zostały wygenerowane z WSDL będzie to usługa sieciowa SOAP, – Kev

4

miałem ten sam problem, ale szczegóły były różne:

adres URL używaliśmy nie masz plik (.asmx) części. Wywołanie adresu URL w przeglądarce było OK. Pracował również na prostym kliencie ustawiającym adres URL za pomocą Visual Studio. Ale nie zadziałało dynamicznie ustawiając Url! Dało to ten sam błąd 405.

W końcu stwierdziliśmy, że dodanie części pliku do adresu URL usługi sieci Web rozwiązało problem. Może błąd w ramce .Net?

4

Znalazłem to z powodu braku instalacji WCF w IIS. Najważniejsze jest to, że rozszerzenie .svc musi zostać zmapowane w IIS See MSDN here. Użyj narzędzia ServiceModelReg, aby zakończyć instalację. Zawsze będziesz chciał sprawdzić, czy WCF jest zainstalowany, a .svc jest zamapowany w IIS, gdy tylko otrzymasz nowy komputer lub ponownie zainstalujesz IIS.

0

MethodNotAllowedEquivalent do statusu HTTP 405. MethodNotAllowed wskazuje, że metoda żądania (POST lub GET) nie jest dozwolona dla żądanego zasobu.

Problem polega na tym, że uri nie jest pełnymi lub poprawnymi adresami do wcf - .scv Sprawdź swój proxy.enpoint lub wcf client.enpoint uri jest poprawny.

0

W moim przypadku problem polegał na tym, że konfiguracja aplikacji została niepoprawnie utworzona/wywołana: w konfiguracji adresu URL usługi używała "localhost" jako nazwy domeny, ale rzeczywista nazwa hosta różniła się od adresu URL, który nazwałem :(więc zmieniłem „localhost” w config do domainname Thah używać w adresie URL. That `wszystko!

Powiązane problemy