C# 如何从URL调用HTTP PUT?

C# 如何从URL调用HTTP PUT?,c#,asp.net,asp.net-web-api,C#,Asp.net,Asp.net Web Api,情景:- 我有一个表单,一旦用户提交此表单,就会向用户发送一封邮件。 像往常一样,邮件正文中有一个激活链接 如果用户单击链接,他将被重定向到页面,现在在访问url时,我想更新我的DB表中的字段:- 已验证为正确 验证日期 我正在使用WebAPI和HTTPPUT操作更新数据库。 ControllerName是注册,我不希望用户点击任何额外的按钮进行更新,我希望如果用户访问url,则应调用HTTPPut(或update)操作,并且一旦用户点击,链接无效。我假设此场景中的操作流程如下: 用户在网页上填

情景:- 我有一个表单,一旦用户提交此表单,就会向用户发送一封邮件。 像往常一样,邮件正文中有一个激活链接

如果用户单击链接,他将被重定向到页面,现在在访问url时,我想更新我的DB表中的字段:-

  • 已验证为正确
  • 验证日期
  • 我正在使用WebAPI和HTTPPUT操作更新数据库。


    ControllerName是注册,我不希望用户点击任何额外的按钮进行更新,我希望如果用户访问url,则应调用HTTPPut(或update)操作,并且一旦用户点击,链接无效。

    我假设此场景中的操作流程如下:

  • 用户在网页上填写表单
  • 用户将表单提交到web api后端
  • 后端保存从表单提交的数据
  • 后端会发送一封包含应用程序链接的电子邮件
  • 用户阅读电子邮件并单击链接
  • 您希望第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
    }
    

    你现在被困在哪里?使用Javascript发送Put请求?太清楚了,当用户单击链接时,您是否尝试更新数据库中的某些字段?请注意,您不能在URL中指定httpmethod Put,您需要修改该URL的请求标头。所以你可以用fiddler来做这件事example@Mark..its没有击中HTTPPut acion