目前,我的应用程序的一部分会向用户发送电子邮件提醒他们事件或任务。当在电子邮件客户端中点击MarkComplete链接时,将向我的ActionHandler.ashx(一个HTTP处理程序)发出HTTP Get请求,其中QueryString参数是输入,允许更新事件/任务。然后向客户端发出新的电子邮件,表示完成。这个工作正常。
这个HTTP GET到处理程序的不良副作用是启动浏览器(即此时打开浏览器是不需要的,也很烦人)。
假设:当我学习ASP.Net Web Api时,我认为我可以将HTTPHandler中的少量代码重构为Web API控制器中的PUT方法。我理解这个控制器可以在进行上述所述的必要处理之后响应void返回(HTTP状态码204)。
问题:在Web API控制器中新编写的上述方法是否可以返回204,并且是否会完全防止浏览器启动?我希望最终用户单击其第一个电子邮件中的链接,仅获得新构建的电子邮件消息,表示“完成”(这里根本没有浏览器)。
编辑以澄清于2016年5月22日:
- 我不需要“用户互动”。理想情况下,用户点击后对用户没有任何影响,只会收到一个新的“回复电子邮件”,表示任务成功完成。
- 下面提出的第2个选项已经尝试过了,并且一些主要的电子邮件程序不允许这样做-请参见:Submit to HttpHandler results in RequestType GET instead of POST
- 请注意,当前发出的HTML电子邮件内容不包含将链接标签括在消息中的任何HTML表单标签。
- 那么,我真的没有任何选择吗?我已经阅读过HTTP PUT可以处理查询字符串(我不知道如何确切地做到...)
PUT
方法的差异,因为查询字符串参数可以从任何请求(GET
、POST
、PUT
、DELETE
、WHATEVER
)中读取,因为它们是URI的一部分。 - Federico DipumaRequest.GetQueryNameValuePairs();
- Federico Dipuma