14

我正在尝试将大量数据发送到 HTTP 处理程序。由于 URL 长度限制,我无法使用 GET 发送它,所以我决定改为发布它。问题是我无法理解这些值。context.Request.Form 显示它有 0 个项目。那么有没有办法可以将数据发布到 HttpHandler?

4

6 回答 6

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
}
于 2009-05-27T02:29:05.133 回答
4

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

application/x-www-form-urlencoded

让它工作。

于 2010-03-09T10:46:10.747 回答
3

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

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

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

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

于 2010-02-13T11:49:27.690 回答
1

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

<httpHandlers>
    ...
    <add verb="*" path="test.ashx" type="Handlers.TestHandler"/>
</httpHandlers>
于 2010-08-27T19:46:55.910 回答
1

POST 字段包含在

HttpContext.Request.Params

要检索它们,您可以使用

var field = HttpContext.Request.Params["fieldName"];
于 2013-02-19T10:28:18.263 回答
1

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

于 2009-05-26T05:08:39.423 回答