Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/264.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# netcore-api版本控制返回404_C#_Asp.net Core_Api Versioning - Fatal编程技术网

C# netcore-api版本控制返回404

C# netcore-api版本控制返回404,c#,asp.net-core,api-versioning,C#,Asp.net Core,Api Versioning,我在我的NetCore 3项目中使用软件包Microsoft.AspNetCore.Mvc.Versioning实现Api版本控制,但是如果我尝试将版本添加到路由器中,它会给我带来一个错误-如果我不通过路由,它可以正常工作 以下是我所做的: using System.Threading.Tasks; using Microsoft.AspNetCore.Mvc; namespace Aus.GGG.Company { [Route("v{version:apiVersion

我在我的NetCore 3项目中使用软件包
Microsoft.AspNetCore.Mvc.Versioning
实现Api版本控制,但是如果我尝试将版本添加到路由器中,它会给我带来一个错误-如果我不通过路由,它可以正常工作

以下是我所做的:

using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;


namespace Aus.GGG.Company
{
    [Route("v{version:apiVersion}/[controller]")]
    [ApiController]
    [ApiVersion("1.0")]
    public class BaseController : ControllerBase
    {

        [HttpGet("/test.json")]
        public async Task<IActionResult> Get() => Ok("test");
    }
}
这是不起作用的旋度:

curl --location --request GET 'http://localhost:3000/v1.0/test.json
还有有效的旋度:

curl --location --request GET 'http://localhost:3000/test.json
在最后一个卷曲中,我可以在响应中看到额外的头
api支持的版本
,因此我想我的配置看起来是正确的


知道缺少什么吗?

如果在动作路线的开头添加斜线,它将忽略控制器上的路线属性

如果您想要这样的格式:

http://localhost:3000/v1.0/test.json
您可以按如下方式进行更改:

[Route("v{version:apiVersion}")]
[ApiController]
[ApiVersion("1.0")]
public class BaseController : ControllerBase
{

    [HttpGet("test.json")]
    public async Task<IActionResult> Get() => Ok("test");
}
[路由(“v{version:apiVersion}”)]
[ApiController]
[ApiVersion(“1.0”)]
公共类BaseController:ControllerBase
{
[HttpGet(“test.json”)]
公共异步任务Get()=>Ok(“测试”);
}

虽然此代码可以提供问题的解决方案,但最好添加上下文,说明其工作的原因/方式。这可以帮助未来的用户学习,并将这些知识应用到他们自己的代码中。在解释代码时,用户可能会以投票的形式向您提供正面反馈。或者,包括控制器的名称。例如,
http://localhost:3000/v1.0/base/test.json
Hi@placplaceboom,我的答案对您有帮助吗?如果有,您可以将其标记为答案谢谢:)
[Route("v{version:apiVersion}")]
[ApiController]
[ApiVersion("1.0")]
public class BaseController : ControllerBase
{

    [HttpGet("test.json")]
    public async Task<IActionResult> Get() => Ok("test");
}
[ApiController]
[ApiVersion("1")]
[Route("api/v{version:apiVersion}/shared/[action]")]
public class DemoController : ControllerBase
{
   public IActionResult TestMethod()
   {
       return ...
   }
}