提交给HttpHandler导致RequestType GET而不是POST

时间:2014-10-16 22:50:04

标签: html asp.net http-post httphandler ashx

我的ActionHandler.ashx文件应该在进入ProcessRequest时被POST。context.Request.RequestType总是" GET"。

背景 此HttpHandler当前工作正常(即单击电子邮件中的链接会导致我输入ActionHandler.ashx并正确处理查询字符串)。例如:

https://mdwdata/CorporateBrain/ActionHandler.ashx?Action=MarkComplete&ID=1024~nzmewoojgnn&CUID=13

是下图中标记完成所示链接的网址:

但是现在我想通过previous SO thread中的建议来改进它:

"在电子邮件正文中,不是发送链接,而是包含一个HTML表单,其中包含一个执行回发到服务器的按钮。"

问题摘要:当我单击“提交”按钮时,我的处理程序输入时带有动词GET而不是POST(因此,我无权访问Request.Form集合中的隐藏表单数据。

以下是电子邮件正文Here is a snippet of the email body:

的摘要(图片)

如果我可以让提交将隐藏的表单变量发布到我的处理程序,那么我当然会删除链接。在调试器中,我验证了表单数据,看起来很不错:enter image description here

我将此行添加到我的web.config文件中:

<add path="ActionHandler.ashx" verb="GET,POST" type="System.Web.UI.SimpleHandlerFactory" validate="true" />

此外,我的电子邮件客户端是Thunderbird。

什么会导致请求变为GET而不是POST?

1 个答案:

答案 0 :(得分:0)

此问题的简短答案是Thunderbird不会在HTML表单标记的Action属性中POST到URL。即使最新版本的Thunderbird(版本31.2.0)“忽略”POST并通过GET请求URL。

HTML表单的构建已正确完成,我测试过的其他电子邮件客户端工作正常:

  • Microsoft Office 365 Outlook Web App
  • Google GMail

所以,我想我正在“正确”这样做,但有些电子邮件客户显然不支持这个(即使是我最喜欢的Thunderbird)。