场景: - 我有一个表单,一旦用户提交此表单,就会向用户发送邮件。 像往常一样,邮件正文中存在激活链接。
如果用户点击链接,他会被重定向到页面,现在访问网址时,我想更新数据库表中的字段: -
我正在使用WebAPI和 HTTPPUT 操作来更新数据库。
ControllerName是注册,我不希望用户点击任何额外的按钮进行更新,我想如果用户访问url,则应调用HTTPPut(或更新)操作并且链接为用户点击后无效。
答案 0 :(得分:2)
我假设此场景中的操作流程是这样的:
并且您希望此处的步骤5中的操作在您的后端触发一些其他操作,即更新您已实现的数据库中的某些数据,并在您的api中公开http PUT
方法
问题是,单击来自在浏览器中打开的电子邮件的链接是您无法指定http
方法。导航到浏览器中的URL(您正在执行的操作)是GET
请求。因此,PUT
行动永远不会受到影响。
要解决此问题,您只需将操作从PUT
更改为GET
。
改变这个:
[HttpPut]
[Route("verify/{hash}")
public void VerifyEmail(string hash){
// your implementation logic
}
到此:
[HttpGet]
[Route("verify/{hash}")
public void VerifyEmail(string hash){
// your implementation logic
}