C# 映射添加到Razor页面的新api控制器时出现问题

C# 映射添加到Razor页面的新api控制器时出现问题,c#,asp.net,api,asp.net-core,razor,C#,Asp.net,Api,Asp.net Core,Razor,我曾尝试将API控制器添加到.NETCore中的RazorPages项目中。我将控制器文件夹添加到我的项目中,单击添加项并选择新控制器。这些页面在本地主机上运行,但当我尝试使用 https://localhost:44348/api/ 在《邮递员》中,我得到一个404错误 Visual Studio生成的代码是: namespace MyWebApp.Controllers { [Route("api/[controller]")] [ApiControl

我曾尝试将API控制器添加到.NETCore中的RazorPages项目中。我将控制器文件夹添加到我的项目中,单击添加项并选择新控制器。这些页面在本地主机上运行,但当我尝试使用

https://localhost:44348/api/ 
在《邮递员》中,我得到一个404错误

Visual Studio生成的代码是:

namespace MyWebApp.Controllers
{
    [Route("api/[controller]")]
    [ApiController]
    public class APIController : ControllerBase
    {
        // GET: api/<APIController>
        [HttpGet]
        public IEnumerable<string> Get()
        {
            return new string[] { "value1", "value2" };
        }

        // GET api/<APIController>/5
        [HttpGet("{id}")]
        public string Get(int id)
        {
            return "value";
        }

        // POST api/<APIController>
        [HttpPost]
        public void Post([FromBody] string value)
        {
        }

    }
}
名称空间MyWebApp.Controllers
{
[路由(“api/[控制器]”)]
[ApiController]
公共类APIController:ControllerBase
{
//获取:api/
[HttpGet]
公共IEnumerable Get()
{
返回新字符串[]{“value1”,“value2”};
}
//获取api//5
[HttpGet(“{id}”)]
公共字符串Get(int-id)
{
返回“值”;
}
//后api/
[HttpPost]
公共作废帖子([FromBody]字符串值)
{
}
}
}
(我已经删除了PUT和DELETE方法)。我不确定这是如何映射的

我假设API与应用程序的其余部分在同一端口上运行。这是正确的吗

在映射“api/[controller]”中,我应该为[controller]放置什么。我是否需要在某处实例化ApicController对象


任何建议都将不胜感激

如果您想在razor page项目中使用API控制器,可以这样做:

startup.cs:

public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
        {
            ...

            app.UseEndpoints(endpoints =>
            {
                endpoints.MapRazorPages();
                endpoints.MapControllerRoute(
                    name: "default",
                    pattern: "{controller=Home}/{action=Index}/{id?}");
            });
        }

然后,如果要转到
Get
,则需要使用
https://localhost:44348/api/API
正如Chetan Ranpariya所说的那样。

你试过
https://localhost:44348/api/api
?我明白您的意思-由于控制器名为“APIcontroller”,我应该使用控制器的“api”前缀。有道理,但不幸的是,它仍然不起作用!谢谢,依依!这解决了问题!