【发布时间】:2016-09-17 00:36:52
【问题描述】:
目前,我的部分应用程序会向用户发送电子邮件,提醒他们注意事件或任务。单击电子邮件客户端中的 MarkComplete 链接时,会向我的 ActionHandler.ashx(一个 HTTPHandler)发出 HTTP Get 请求,其中 QueryString 参数是允许更新事件/任务。然后将新的电子邮件发送回客户端,发出完成信号。这行得通。
此 HTTP GET 对处理程序的不良副作用是浏览器的启动(即此时,不需要打开浏览器并且很麻烦)。
前提:当我研究 ASP.Net Web Api 时,我想我可以将 HTTPHandler 中的少量代码重构为 Web API 控制器中的 PUT 方法.我的理解是,在完成上述所需处理后,此控制器可能会以 void return(HTTP 状态代码 204)进行响应。
问题:上述方法在 Web API 控制器中新编写的 PUT 方法中是否可以返回 204,这会阻止浏览器完全启动吗?我希望最终用户单击他的第一封电子邮件中的链接,并且只获得新构建的电子邮件消息,表明“完成”(这里根本没有浏览器)。
2016 年 5 月 22 日澄清的编辑:
- 我不需要“用户交互”。理想情况下,用户点击后,用户没有任何反应,只是收到新的“回复电子邮件”,表明任务已成功完成。
- 下面建议的答案中列出的选项 2 已尝试失败,一些主要的电子邮件程序不允许这样做 - 请参阅:Submit to HttpHandler results in RequestType GET instead of POST
- 请注意,当前发出的 HTML 电子邮件内容是否不包含任何 HTML 表单标签,这些标签包含在邮件中的链接标签中。
- 我真的还是没有选择吗?我已经读过 HTTP PUT 可以处理查询字符串(我只是还不知道具体该怎么做……)
【问题讨论】:
标签: vb.net asp.net-mvc-4 http asp.net-web-api email-client