當我通過外部專案包含控制器時嘗試路由到控制器時遇到問題。有問題的控制器在直接包含在專案或外部專案中時作業正常,僅當版本欄位從路由中洗掉時。控制器定義如下。
[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;
});
uj5u.com熱心網友回復:
我做了一些測驗。
首先,我將 [Route("api/devices")] 添加到您的控制器屬性中
[ApiController]
[ApiVersion("1.0")]
[Produces("application/json")]
[Route("api/v{version:apiVersion}/devices")]
[Route("api/devices")]
public class DeviceManagementController : ControllerBase
并發現 url .../api/v1.0/devices 作業正常。
在此之后,我嘗試只使用 .../api/devices url。
它與 [ApiVersion("1.0")] 屬性一起正常作業
當我將屬性更改為 [ApiVersion("2.0")] 時,它發出了錯誤的版本錯誤
所以一切都按預期進行。
概括:
我建議您添加 [Route("api/devices")] 并嘗試使用.../api/devices url 作為暫時的解決方法,直到您找到更好的方法。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/313600.html
標籤:。网 asp.net核心 .net核心 asp.net-mvc-控制器
