2009-05-26 5 views
13

大量のデータをHTTPハンドラに送信しようとしています。 URLの長さ制限のためにGETを使用して送信できないため、代わりにPOSTすることにしました。問題は、私が値を得ることができないということです。 context.Request.Formには0個の項目があることが示されています。では、HttpHandlerにデータをPOSTできる方法はありますか?ASP.NET HttpHandlerにデータをPOSTする方法は?

+0

を使用することができ、それらを取得するには

HttpContext.Request.Params 

に含まれていますか? HttpWebRequest? –

+0

私はJqueryを使用してAjaxコールを作成しています –

+0

リクエスト側で何をしているのかのコードサンプルを提供できますか? – Deeksy

答えて

1

HTTPハンドラに送信するPOSTデータは、クエリ文字形式a=b&c=dである必要があります。そして、Request["a"]bを返す)などを使用してサーバー側で取得することができます。

+0

Firebugをfirefoxにインストールすると、Ajaxサーバーのやりとりをデバッグするのに非常に役立ちます。どうしたらいいですか?データはどのようになりますか?あなたが提案していることをもう少し説明することができますか?あなたがクエリ文字列を作成してURLに追加すると言っているのであれば、それはURLの長さの制限のために動作しません。 –

+0

私は彼がデータをURLエンコードすることを意味すると思います。アンパサンド(&)で区切られています。要求文字列のように、URLではなく、jQueryが自動的に処理します。 –

11

いくつかのコードを参照すると、問題を診断するのに役立ちます。このようなことを試しましたか?

のjQueryコード:

$.post('test.ashx', 
     {key1: 'value1', key2: 'value2'}, 
     function(){alert('Complete!');}); 

次に、あなたのProcessRequest()方法では、あなたが行うことができる必要があります:

string key1 = context.Request.Form["key1"]; 

ます。また、デバッグするのprocessRequest()メソッドでは、要求の種類を確認することができます問題。いくつかの人気のチュートリアルは、あなたが追加することをお勧めラインだ、私は同じ問題を抱えて、そして最終的には「JSON」などのコンテンツタイプを設定することが課題であったことを考え出した

if(context.Request.RequestType == "POST") 
{ 
    // Request should have been sent successfully 
} 
else 
{ 
    // Request was sent incorrectly somehow 
} 
2

...

contentType: "application/json; charset=utf-8" 

$ ajax呼び出しで動作し、ASPx WebServicesでうまく動作しますが、何らかの理由でPOSTを使用しているHttpHandlerではありません。

クエリ文字列の値が正常に機能しているため、キャッチが難しい(ウェブ上に表示される別の手法ですが、それにPOSTを使用するのは意味がありません)。

2

私も同じ問題がありました。クライアント/ AJAXの問題でした。私はAJAX呼び出し要求ヘッダ "ContentType"を

application/x-www-form-urlencoded 

に設定しなければなりませんでした。

1

同じような問題に直面しています。すべての問題を修正した後、私が逃したもう一つのものがweb.config - *またはGET,POSTという動詞に変更されました。その後、すべてうまくいった。

<httpHandlers> 
    ... 
    <add verb="*" path="test.ashx" type="Handlers.TestHandler"/> 
</httpHandlers> 
1

POSTフィールドは、あなたが要求を行うために使用している何

var field = HttpContext.Request.Params["fieldName"]; 
関連する問題