我正在尝试将大量数据发送到 HTTP 处理程序。由于 URL 长度限制,我无法使用 GET 发送它,所以我决定改为发布它。问题是我无法理解这些值。context.Request.Form 显示它有 0 个项目。那么有没有办法可以将数据发布到 HttpHandler?
问问题
28809 次
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=d
。Request["a"]
您可以使用(will return )在服务器端检索它b
,依此类推。
于 2009-05-26T05:08:39.423 回答