【问题标题】:URL issue in asp.net coreasp.net core 中的 URL 问题
【发布时间】:2020-03-22 20:07:12
【问题描述】:

我正在实施确认电子邮件功能。我正在向电子邮件中包含激活链接的用户发送帐户激活电子邮件。我正在尝试当用户单击电子邮件中的链接时,它将用户重定向到我的方法之一 ConfirmEmail ,该方法采用两个参数 user 是加密的电子邮件和 代码。当我单击将调试器设置为该 ConfirmEmail 方法的链接时,它不会点击那里。

 var htmlContent = "<h4>Click on the link below to confirm your<b> Hello World</b> account:</h4>"
                                         + "</br>"
                                         + "<a href=https://localhost:44372/api/User/ConfirmEmail?user=" + EncryptedEmail + "&code=" + code + ">Activate Account</a>";

确认电子邮件方法:

        [HttpGet]
        public IActionResult ConfirmEmail(string user, string code)
        {

            //Do work here
            return Ok();
        }  

电子邮件中的链接如下所示:
https://localhost:44372/api/User/ConfirmEmail?user=oBDULGKPcDaZoN89XcTtWnz%2f2m%2flFwfs&code=7250
Startup.cs 配置方法:

 public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
    {
        if (env.IsDevelopment())
        {
            app.UseDeveloperExceptionPage();
        }

        app.UseHttpsRedirection();

        app.UseRouting();

        app.UseAuthorization();

        app.UseEndpoints(endpoints =>
        {
            endpoints.MapControllers();
        });

    }

【问题讨论】:

  • 我想你到 UserController 的路由是正确的?
  • [Route("api/[controller]")] 这是添加在控制器之上的
  • 它的“用户控制器”

标签: c# .net asp.net-core


【解决方案1】:

看起来这是一个 API 控制器,因此您需要将路由添加到端点。您可以通过将路由添加到 Http 动词属性来做到这一点。 More info on attribute routing

[HttpGet("ConfirmEmail")]
public IActionResult ConfirmEmail(string user, string code)
{
}  

这会将 GET 请求路由到 /api/user/confirmemail,而之前它可能会路由到 /api/user

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多