【发布时间】:2020-04-10 15:19:49
【问题描述】:
我在 WebApiConfig 中有以下设置
configuration.Routes.MapHttpRoute(
name: "ConfirmEmailRoute",
routeTemplate: "api/account/ConfirmEmail/{userId=userId}/{code=code}",
defaults: new { userId = RouteParameter.Optional, code = RouteParameter.Optional }
);
控制器中的这个动作
[RoutePrefix("api/account")]
public class AccountController : BaseApiController
{
[AllowAnonymous]
[HttpGet]
[Route("ConfirmEmail/{userId=userId}/{code=code}", Name = "ConfirmEmailRoute")]
public async Task<IHttpActionResult> ConfirmEmail(string userId = "", string code = "")
{
if (string.IsNullOrWhiteSpace(userId) || string.IsNullOrWhiteSpace(code))
{
ModelState.AddModelError("", "User Id and Code are required");
return BadRequest(ModelState);
}
var result = await this.UserManager.ConfirmEmailAsync(userId, code);
if (result.Succeeded)
{
return Ok("Email has been successfully confirmed");
}
else
{
return GetErrorResult(result);
}
}
}
我正在使用以下内容来生成它的 URL
Url.Link("ConfirmEmailRoute", new { userId = user.Id, code = code })
但这总是返回 null。
我也尝试过添加控制器和动作:
Url.Link("ConfirmEmailRoute", new { userId = user.Id, code = code, controller = "Account", Action = "ConfirmEmail" })
也不行
参数名称相同,我不明白为什么它不起作用!
【问题讨论】:
标签: asp.net-mvc asp.net-web-api url-routing