如何将数据发布到ASP.NET HttpHandler?

时间:2009-05-26 05:03:27

标签: asp.net ajax httphandler

我正在尝试将大量数据发送到HTTP处理程序。由于URL长度限制,我无法使用GET发送它,因此我决定将其POST。问题是我无法达到价值观。 context.Request.Form显示它有0个项目。那么有没有办法将数据发布到HttpHandler?

6 个答案:

答案 0 :(得分:11)

查看一些代码有助于诊断问题。你尝试过这样的事吗?

jQuery代码:

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

然后在您的ProcessRequest()方法中,您应该可以:

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

您还可以在ProcessRequest()方法中检查请求类型以调试问题。

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

答案 1 :(得分:2)

我遇到了同样的问题,并最终发现将内容类型设置为“json”是个问题......

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

这是一些流行的教程建议你在$ ajax调用中添加的一行,并且与ASPx WebServices配合得很好,但由于某些原因它不适用于使用POST的HttpHandler。

很难捕捉,因为查询字符串中的值工作正常(在Web中看到的另一种技术,尽管使用POST没有多大意义)。

答案 2 :(得分:2)

我也有同样的问题。这是客户端/ AJAX问题。我必须将AJAX调用请求标头“ContentType”设置为

application/x-www-form-urlencoded

让它发挥作用。

答案 3 :(得分:1)

您要发送到HTTP处理程序的POST数据必须采用查询字符串格式a=b&c=d。您可以使用Request["a"](将返回b)在服务器端检索它,依此类推。

答案 4 :(得分:1)

面临类似的问题。纠正所有问题之后,我在web.config中又遗漏了一件事 - 将动词更改为*GET,POST。之后一切正常。

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

答案 5 :(得分:1)

POST字段包含在

HttpContext.Request.Params

要检索它们,您可以使用

var field = HttpContext.Request.Params["fieldName"];