gpt4 book ai didi

c# - 未调用 .NET Core ApiController 方法

转载 作者:行者123 更新时间:2023-12-04 16:42:13 24 4
gpt4 key购买 nike

我使用脚手架创建了一个 API Controller 。这是我在其中添加的测试方法:

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 进行一些更改,但我尝试的一切都没有成功。我该如何解决这个问题?

最佳答案

显示的网址

https://localhost:12345/api/Authentication/VerifyIsLoggedIn

与显示的 Controller 操作的属性路由模板不匹配(请参阅代码中的注释)

[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,而 Controller 只能处理 HTTP POST 请求。

您需要更新使用的 HTTP 动词和路由模板

[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);
}
}

引用 Routing to controller actions in ASP.NET Core

引用 Routing in ASP.NET Core

关于c# - 未调用 .NET Core ApiController 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58229201/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com