我的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集合中的隐藏表单数据。
以下是电子邮件正文
如果我可以让提交将隐藏的表单变量发布到我的处理程序,那么我当然会删除链接。在调试器中,我验证了表单数据,看起来很不错:
我将此行添加到我的web.config文件中:
<add path="ActionHandler.ashx" verb="GET,POST" type="System.Web.UI.SimpleHandlerFactory" validate="true" />
此外,我的电子邮件客户端是Thunderbird。
什么会导致请求变为GET而不是POST?
答案 0 :(得分:0)
此问题的简短答案是Thunderbird不会在HTML表单标记的Action属性中POST到URL。即使最新版本的Thunderbird(版本31.2.0)“忽略”POST并通过GET请求URL。
HTML表单的构建已正确完成,我测试过的其他电子邮件客户端工作正常:
所以,我想我正在“正确”这样做,但有些电子邮件客户显然不支持这个(即使是我最喜欢的Thunderbird)。