【发布时间】:2022-02-04 05:22:52
【问题描述】:
当通过外部项目包含控制器时,我在尝试路由到控制器时遇到问题。仅当从路由中删除版本字段时,直接包含在项目中或从外部项目中包含问题的控制器才能正常工作。控制器定义如下。
[ApiController]
[ApiVersion("1.0")]
[Produces("application/json")]
[Route("api/v{version:apiVersion}/devices")]
[Authorize(Roles = UserConst.PermissionGroup.Admin)]
public class DeviceManagementController : ControllerBase{...}
将路线更改为下面的工作正常
[Route("api/devices")]
将路由更改为下面的失败与通过{version:apiVersion}包含它的方式相同
[Route("api/v1.0/devices")]
有什么想法可能是错的吗?对于任何版本信息,服务器似乎只是返回默认索引页面,这是找不到控制器时的后备。
用于添加 Api 版本控制的 Startup.cs 代码
services.AddApiVersioning(config =>
{
config.DefaultApiVersion =
new ApiVersion(1, 0);
config.AssumeDefaultVersionWhenUnspecified = true;
config.ReportApiVersions = true;
});
【问题讨论】:
-
stackoverflow.com/questions/54021924/… 也许一样?如,我认为“。”是问题
-
我不确定,因为它适用于其他控制器并且只有在移动到外部组件时才会失败?
-
你用的是什么网址?
-
@JohnH 我可以确认它是应用程序部分。 .net core 5.0 会自动执行此操作,如果不包含版本,路由会很好地解析
-
@Serge /api/v1.0/devices 是过去运行良好的 URL,但自从移到外部后就不行了。
标签: c# .net asp.net-core .net-core asp.net-mvc-controller