2012-04-19 6 views
6

同様の問題に関連する既存の異なるSOの質問を検索しましたが、私の問題に関連するものは何も見つかりませんでした。"405メソッドが許可されていません" - ASP.NET jQueryを使用する場合ajax POST

私は、次の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 Method Not Allowed - http://localhost:57255/ ....."

私は、これらの2つのアプリケーションについて異なる何かを見つけることができませんので、私はこれが動作しない理由として困惑しています。

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

私は私のweb.configに以下を追加しようとしましたが、私はまだ同じ405エラーを取得:

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

どのように私はこの問題を解決することができますか?

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

+0

あなたは私たちyour'e 'DeclineRequest'方法を示しすることはできますか? –

+0

http://stackoverflow.com/questions/7430492/twitter-search-api-networkerror-405-method-not-allowedに似ていますか? –

+0

@ŁukaszW.pl 'DeclineRequest'メソッドは、単純に' return "Hello World"を呼び出しています。私はこれが問題であるとは思わないが、メソッド名をタイプすると同じエラーが返される。私は意図的にいくつかのテストでこのメソッドをミスピールしてこれを確認しました。 – Curt

答えて

0

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

申し訳ありませんが、わかりやすい提案のために、以前のようなURLは見たことがありません。あなたはそれを書き換えていますか?

+2

これは、Index.aspxコードビハインドで定義されているDeclineRequestメソッドを呼び出すWebMethod呼び出し形式です。 – Dimitri

+0

ありがとう!私は不思議でした... –

1

405 errors often arise with the POST method. You may be trying to introduce some kind of input form on the Web site, but not all ISPs allow the POST method necessary to process the form.

All 405 errors can be traced to configuration of the Web server and security governing access to the content of the Web site, so should easily be explained by your ISP.

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

私は要求を確認するためのログオンIISの電源を入れます。またstring(またはいくつかの他のデータ型)RequesIdのプロパティを持つオブジェクトであるOR フィドラーはdeclineRequestにサーバー
にパラメータを送信するウルの要求を確認し、何が舞台裏で起こっている

+0

VS 2010を使用している現時点では 'localhost'でこれをやっているだけなので、IIS Loggingはありません。 – Curt

+0

私は、IISとVSが動作する方法の間に多くの不一致があることを見てきました。私はIISホストを設定しようとし、そこから行くつもりです。 – Dimitri

+0

これは、ほとんど同じコードで、同じマシンで動作していても、他のアプリケーションでうまくいきます。したがって、IISをインストールすることはソリューションのようには見えません。 – Curt

0

を見ることがRequestId に名前を付けます後者の場合にはuはちょうどJSONまたはRequestId=requestId
のようなプレーンな文字列としてデータを送信することができますcuzをそう

+0

パラメータを送信しなくても、私は同じ問題を得る – Curt

+0

正確に彼はそこのパラメータのTYPEですか?それはいくつかのnull可能でないタイプですか? –

+0

その '整数 ' – Curt

0

は私の推測がされ、より適切な何かをJSON.stringify({ RequestId: requestId })を交換してみてください。要求では、あなたがそのコンテンツがJSONが返されますと言っているが、あなたは普通の文字列を返すこれは間違ったフォーマットである...正しいJSONを返すか、テストのために、プレーンテキストにコンテンツタイプを変更してみ...

-3

このコードデータ型を削除します。あなたのコードから「JSONを」と多分後半パーティーへ

+0

それは正直な答えではありません。データ型はCORSエラーとは何の関係もありません。 –

関連する問題