【发布时间】:2014-12-12 10:57:16
【问题描述】:
我的 ActionHandler.ashx 文件应该在进入 ProcessRequest 时发布,context.Request.RequestType 始终是“GET”。
背景: 此 HttpHandler 当前工作正常(即单击电子邮件中的链接会导致输入我的 ActionHandler.ashx 并正确处理查询字符串)。例如:
https://mdwdata/CorporateBrain/ActionHandler.ashx?Action=MarkComplete&ID=1024~nzmewoojgnn&CUID=13
是在下图中显示为 Mark-Complete 的链接的 URL:
但现在我正在尝试通过在 previous SO thread 中遵循此 建议 来改进它:
“在电子邮件正文中,不要发送链接,而是包含一个 HTML 表单,其中包含一个按钮,该按钮执行回发到您的服务器。”
问题摘要:当我单击提交按钮时,我的处理程序输入动词 GET 而不是 POST(因此,我无法访问 Request.Form 集合中的隐藏表单数据。 p>
这是邮件正文的 sn-p(图片)
如果我可以让 Submit 将隐藏的表单变量发布到我的处理程序,那么我当然会删除链接。在调试器中,我验证了表单数据,看起来不错:
我将此行添加到我的 web.config 文件中:
<add path="ActionHandler.ashx" verb="GET,POST" type="System.Web.UI.SimpleHandlerFactory" validate="true" />
另外,我的电子邮件客户端是 Thunderbird。
什么会导致请求是 GET 而不是 POST?
【问题讨论】:
-
Forms in HTML email?不确定 Thunderbird 的具体情况,但回溯(大约 2007 年)的警告适用。可以在客户端查看源码吗?
-
@EdSF - 是的,我对此也有点不确定。只需遵循原始帖子中上面引用的上一个 SO 线程中的建议即可。这种方法需要适用于所有电子邮件客户端。我看不到在 Thunderbird 客户端中“查看源代码”的方法。我会仔细研究您提供的链接(似乎与我上面提到的建议相矛盾)。我在想“概念”没问题,也许我只是错过了一个特殊的 web.config 条目等。
标签: html asp.net http-post httphandler ashx