C# 映射添加到Razor页面的新api控制器时出现问题
我曾尝试将API控制器添加到.NETCore中的RazorPages项目中。我将控制器文件夹添加到我的项目中,单击添加项并选择新控制器。这些页面在本地主机上运行,但当我尝试使用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
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”前缀。有道理,但不幸的是,它仍然不起作用!谢谢,依依!这解决了问题!