我已经使用脚手架来创建API控制器。 这是我在其中添加的测试方法:
namespace MyApp.Controllers
{
[Route("api/[controller]")]
[ApiController]
public class AuthenticationController : ControllerBase
{
[HttpPost]
public JsonResult VerifyIsLoggedIn()
{
Dictionary<string, bool> result = new Dictionary<string, bool> { { "Authenticated", true} };
return new JsonResult(result);
}
}
}
我的Program.cs看起来像这样:
namespace MyApp
{
public class Program
{
public static void Main(string[] args)
{
CreateHostBuilder(args).Build().Run();
}
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>();
});
}
}
我运行该应用程序,获取登录屏幕,成功登录,但是随后转到下面的URL时,出现错误消息,指出“找不到该网址的网页:”
https://localhost:12345/api/Authentication/VerifyIsLoggedIn
好像我必须对Program.cs进行一些更改,但是我尝试过的一切都没有成功。我该如何解决?
答案 0 :(得分:2)
显示的网址
https://localhost:12345/api/Authentication/VerifyIsLoggedIn
与显示的控制器操作的属性路由模板不匹配(请参见代码中的注释)
[Route("api/[controller]")]
[ApiController]
public class AuthenticationController : ControllerBase {
//POST api/Authentication
[HttpPost]
public IActionResult VerifyIsLoggedIn() {
var result = new { Authenticated = true };
return Ok(result);
}
}
此外,如果您尝试在浏览器中查看URL,它将默认为HTTP GET,而控制器只能处理HTTP POST请求。
您需要更新所使用的HTTP Verb和路由模板
[Route("api/[controller]")]
[ApiController]
public class AuthenticationController : ControllerBase {
//GET api/Authentication/VerifyIsLoggedIn
[HttpGet("[action]")]
public IActionResult VerifyIsLoggedIn() {
var result = new { Authenticated = true };
return Ok(result);
}
}
答案 1 :(得分:0)
在我的情况下,在创建新的API项目时遇到相同的问题,请取消选中“配置HTTPS”框。 我的问题已解决