api - LinkGenerator.GetUriByAction 不遵循自定义路线
问题描述
那是控制器:
[ApiController]
[Route("api/[controller]")
public class MarketController : ControllerBase
{
[HttpGet("{id}/picture")
public async Task<IActionResult> GetPictureAsync(Guid id)
{
...
}
}
我正在使用 LinkGenerator 从 GetPictureAsync 创建一个绝对 URI。并设置 Startup 类以启动 HttpContextAccessor 作为 DI。
// Startup.cs
...
public void ConfigureServices(IServiceCollection services)
{
...
services.AddHttpContextAccessor();
...
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
...
app.UseEndpoints(endpoints =>
{
endpoints.MapControllers();
endpoints.MapDefaultControllerRoute();
});
}
在我的自定义类中,我使用这种方式:
public class CustomClass
{
private readonly IHttpContextAccessor _httpContextAccessor;
private readonly LinkGenerator _linkGenerator;
public CustomClass(IHttpContextAccessor httpContextAccessor,
LinkGenerator linkGenerator)
{
_httpContextAccessor = httpContextAccessor;
_linkGenerator = linkGenerator;
}
public void SomeMethod()
{
var uri = _linkGenerator.GetUriByAction(_httpContextAccessor.HttpContext, "GetPicture", "Markets", new { id = id });
}
}
问题是因为 LinkGenerator 没有遵循我在 GetPicture 方法中设置的自定义路由示例。
LinkGenerator 生成以下值:
https://localhost:5051/Markets/GetPicture/00748d23-afa7-4efb-b67b-77f68fdc44d5
但它应该生成:
https://localhost:5051/api/Markets/00748d23-afa7-4efb-b67b-77f68fdc44d5/picture
解决方案
推荐阅读
- javascript - 使用变量键作为对象值时,在 MongoDB 中更新对象数据的正确方法是什么?
- linux - linux如何终止进程
- python-3.x - 试图将 int 中的 Shamir 算法输出转换为字符串
- reactjs - React Bootstrap Table2 排序和搜索
- javascript - 跨对象属性的编程 JSON 条件和比较
- angular - Angular-Side 导航栏,所有子菜单的数据切换折叠
- php - 网页抓取 php 特定的 div
- c# - 如何读取二维数组并将其作为矩阵写入控制台
- amazon-web-services - DynamoDB 流式传输可靠性 (SLA)
- python - 如何将输入字符串转换为python中的浮点数列表