6

同様の問題に関連する既存の SO の質問を多数検索しましたが、私の問題に関連するものは見つかりませんでした。

次のjQueryコードがあります:

$.ajax({
   url: "Index.aspx/DeclineRequest"
   , type: 'POST'
   , contentType: 'application/json; charset=utf-8'
   , dataType: 'json'
   , data: JSON.stringify({ RequestId: requestId })
});

別の ASP.NET Web アプリケーションで POST データに非常によく似た手法を使用していますが、これは正常に機能します。ただし、このアプリケーションは次のエラーを返しています。

「NetworkError: 405 メソッドは許可されていません - http://localhost:57255/ .....」

これら 2 つのアプリケーションに違いは見当たらないので、なぜこれが機能しないのか混乱しています。

私が考えることができるこれら 2 つのアプリケーションの唯一の違いは、動作しているのは .NET 2.0 であり、動作していないのは .NET 3.5 であるということです。

に以下を追加しようとしましたweb.configが、それでも同じ 405 エラーが発生します。

<webServices>
   <protocols>
     <add name="HttpPost"/>     
     <add name="HttpPostLocalhost"/>   
   </protocols>      
</webServices>

この問題を解決するにはどうすればよいですか?

更新 (16:40):このアプリケーションを IIS に移動したところ、405 エラーは返されなくなりました。ただし、開発環境はローカルホストのみです。これがローカルホストでのみエラーになるのはなぜですか?

4

6 に答える 6

1

パーティーに遅れるかもしれませんが、Web.Config ファイルに追加してみてください。

< handlers >
   ....
       < remove name="WebDAV" />
   ....
< /handlers >

この記事では、問題の原因について説明しています。

http://www.asp.net/web-api/overview/testing-and-debugging/troubleshooting-http-405-errors-after-publishing-web-api-applications

于 2015-04-29T08:52:02.253 に答える
1

405 エラーは、POST メソッドでよく発生します。Web サイトにある種の入力フォームを導入しようとしているかもしれませんが、すべての ISP がフォームの処理に必要な POST メソッドを許可しているわけではありません。

すべての 405 エラーは、Web サーバーの構成と、Web サイトのコンテンツへのアクセスを管理するセキュリティに起因する可能性があるため、ISP によって簡単に説明されるはずです。

http://www.checkupdown.com/status/E405.html

リクエストを確認するために、IIS ロギングをオンにします。また、Fiddler を取得して、舞台裏で何が起こっているかを確認します

于 2012-04-19T12:17:17.367 に答える
0

私の推測では: リクエストでは、返されるコンテンツは JSON になると言っていますが、正しくない形式のプレーン文字列を返しています... 正しい JSON を返すか、テストのためにコンテンツ タイプをプレーン テキストに変更してみてください...

于 2012-05-09T08:22:42.750 に答える
0

url: "Index.aspx/DeclineRequest" は url: "Index.aspx?DeclineRequest" であってはなりませんか?

かなり明白な提案で申し訳ありませんが、そのような URL は以前に見たことがありません。書き直しですか?

于 2012-04-19T12:10:52.863 に答える
0

サーバーに送信しているリクエストを確認してください。
denyRequest は、RequesIdOR string(または他のデータ型) の名前のプロパティを持つオブジェクトですRequestId 。後者の場合、データをそのまま送信しJSONたり、プレーンな文字列として送信したりできるので、別のものRequestId=requestId
に置き換えてみてください。JSON.stringify({ RequestId: requestId })適切な

于 2012-04-19T13:06:07.883 に答える
-3

このコード dataType: 'json' をコードから削除して実行します

于 2012-12-14T09:47:57.383 に答える