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# ASP.net核心API中的路由_C#_Asp.net Core_.net Core_Asp.net Core Webapi_Asp.net Core Routing - Fatal编程技术网

C# ASP.net核心API中的路由

C# ASP.net核心API中的路由,c#,asp.net-core,.net-core,asp.net-core-webapi,asp.net-core-routing,C#,Asp.net Core,.net Core,Asp.net Core Webapi,Asp.net Core Routing,我读了很多关于Asp.net内核中API路由的主题,但我无法让它工作 首先,这是我的控制器: Public class BXLogsController : Controller { //[HttpGet("api/[controller]/ID/{id}", Name = "GetL")] public IActionResult GetById(string id) { if (id.Trim() == "") return B

我读了很多关于Asp.net内核中API路由的主题,但我无法让它工作

首先,这是我的控制器:

Public class BXLogsController : Controller
{
    //[HttpGet("api/[controller]/ID/{id}", Name = "GetL")]
    public IActionResult GetById(string id)
    {
        if (id.Trim() == "")
            return BadRequest();
        else
        {
            Logs l = AccessBase.AccBase.GetLog(id);
            return Json(l);
        }
    }

    //[HttpGet("api/[controller]/API/{apiname}", Name = "GetLAPI")]
    public IActionResult GetByAPI(string apiname)
    {
        if (apiname.Trim() == "")
            return BadRequest();
        else
        {
            List<Logs> lstLogs = AccessBase.AccBase.GetLogsApi(apiname);
            return Json(lstLogs);
        }
    }
}
我一定忘了什么,但什么也没看见


有人能帮我吗?

试试这个。您可以在控制器上放置公共路由前缀

[Route("api/[controller]")]
public class BXLogsController : Controller {
    //GET api/BXlogs/id/blah
    [HttpGet("ID/{id}", Name = "GetL")]
    public IActionResult GetById(string id) { ... }

    //GET api/BXlogs/api/blahapi
    [HttpGet("API/{apiname}", Name = "GetLAPI")]
    public IActionResult GetByAPI(string apiname) { ... }
}
请阅读此处的属性路由

注意

通过由定义的常规路线无法访问操作 Startup.Configure中的UseEndpoints、UseMvc或UseMvcWithDefaultRoute

因此,不能将UseMvc路由与API一起使用

发件人:

如果您计划使用类似于web API的自定义操作名称,请使用

 [Route("api/[controller]")]
    public class BXLogsController : Controller {
        //GET api/BXlogs/blahapi
        [HttpGet("{apiname}", Name = "GetLAPI")]
        public IActionResult GetByAPI(string apiname) { ... }
    }
稍微扩展到@nkosi

所以你会打电话给我

获取:https://localhost:44302/api/BXLogs/GetLAPI


或者本教程:确保没有重复的路线。
 [Route("api/[controller]")]
    public class BXLogsController : Controller {
        //GET api/BXlogs/blahapi
        [HttpGet("{apiname}", Name = "GetLAPI")]
        public IActionResult GetByAPI(string apiname) { ... }
    }