web-dev-qa-db-ja.com

Webサービスを呼び出すときにHTTPステータス405「メソッドが許可されていません」を解決する方法

WSE 2.0セキュリティを使用してSOAP Webサービスにアクセスする必要があります。生成されたすべての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)

いくつかグーグルを実行しましたが、これはサーバー構成の問題であるようです。ただし、このWebサービスは問題なく多くのクライアントで使用されています(WebサービスはTelecom New Zealandによって提供されるため、正しく構成する必要があります。Javaで記述されていると思います)

誰もがこの問題についていくつかの光を当てることができますか?

17
Muxa

わかりました、問題は何でしたか。 .asmx URLではなく.wsdl URLを呼び出そうとしました。どー!

19
Muxa

IISにWCFがインストールされていないことが原因であることがわかりました。主なことは、.svc拡張子をIIS MSDNを参照)にマッピングする必要があることです。 ServiceModelRegツールを使用してインストールを完了します。新しいマシンを入手するかIISを再インストールするたびに、WCFがインストールされ、.svcがIIS)にマップされていることを確認します。

4
A-Dubb

私は同じ問題を抱えていましたが、詳細は異なりました:

使用していたURLには、ファイル(.asmx)の部分がありませんでした。ブラウザでURLを呼び出すことは問題ありませんでした。また、Visual Studioを介してURLを設定する単純なクライアントでも機能しました。しかし、URLを動的に設定することはできませんでした!同じ405エラーが発生しました。

最後に、ファイルパーツをWebサービスのURLに追加すると問題が解決することがわかりました。多分.Netフレームワークのバグですか?

4
Juan Calero

HTTPアクティベーションを有効にする必要があります

[コントロールパネル]> [Windowsの機能]> [.NET Framework 4.5 Advanced Services]> [WCFサービス]> [HTTPアクティブ化]に移動します。

1
Diego Elizondo

私の場合の問題は、アプリの構成が誤って形成/呼び出されたことでした:構成では、サービスのURLはドメイン名として「localhost」を使用していましたが、実際のホスト名は私が呼び出したURLと異なりました:(つまり、構成の「localhost」を変更しましたURLで使用しているドメイン名に変換します。

0
StanislavT.

うーん、他のクライアントもC#/。NETを使用していますか?

メソッドは許可されていません->これはREST Webサービスではなく、SOAPサービスですか?

0
cruizer