我准备用asp.net core 3.1搭建一个MVC API服务器。
我在默认的API控制器旁边有两个API控制器(由代码示例提供)。
问题描述。
日志是开启的,但显然请求甚至没有击中UserController。调试模式没有进入,给定的方法没有记录日志信息)。
Reservation Controller.UserController.GET方法返回一个简单的字符串,而不是IActionResult--没有变化,欢迎提出任何建议,因为我有点看不出有什么区别或错误。
[Route("api/[controller]")]
[ApiController]
public class Reservation : ControllerBase
{
[HttpGet]
public IEnumerable<string> Get()
{
return new string[] { "value1", "value2" };
}
}
UserController
[Route("api/[controller]")]
[ApiController]
public class User : ControllerBase
{
[HttpGet]
public IActionResult Get()
{
return Ok("Something returned");
}
}
供参考Startup.cs相关内容。
public void ConfigureServices(IServiceCollection services)
{
services.AddControllers();
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env, ILoggerFactory loggerFactory)
{
// Adding Serilog as logger service
loggerFactory.AddSerilog();
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
app.UseHsts();
app.UseRouting();
app.UseAuthorization();
app.UseHttpsRedirection();
app.UseEndpoints(endpoints =>
{
endpoints.MapControllers();
});
}
你提到你是手动构建的。你的意思是你只是创建了一个类,然后把这些东西类型化复制进去?
你有没有试过右击并添加新控制器,然后用这种方式添加?当我看到ApiController时,我认为更多的是Web Api,而不是Controller(MVC),但我通常不会手动创建它们。
另外,你能不能试试把实际控制器上的路由改成[Route("api[controller][action]")]。
老实说,我不确定你的控制器是否被正确注册,但有时手动创建控制器的行为。
另外一个控制器的动作不应该像这样阻止另一个控制器的动作,所以我很好奇你的客户端。是在做循环还是什么?
尝试重命名类。
public class Reservation : ControllerBase
改名为
public class ReservationController : ControllerBase
和
public class User : ControllerBase
到
public class UserController : ControllerBase