gpt4 book ai didi

post - WebAPI - 属性路由 POST 不适用于 WebAPI Cors?

转载 作者:行者123 更新时间:2023-12-04 01:59:43 27 4
gpt4 key购买 nike

我有以下 Controller ,它应该接受用户名和密码作为 POST 中的有效负载。如果我将其更改为 HttpGet 就可以了。

[RoutePrefix("api")]
public class AccountController : ApiController
{
[HttpPost("login/{username}/{password}")]
[AcceptVerbs("POST")]
public Login Login(string username, string password)
{
Login login = new Login();
if (username == "user" && password == "pw") login.Success = true;
else login.Success = false;
return login;
}
}

OPTIONS 请求可以通过,但 POST 失败。

enter image description here

选项标题:

enter image description here

选项响应:

enter image description here

POST header :

enter image description here

POST响应:

enter image description here

知道我做错了什么吗?

最佳答案

您已使用 [HttpPost("login/{username}/{password}")] 定义了您的路线但是您没有在 url 中发送用户名和密码,而是在请求正文中发送,因此您的路由不匹配,因此您得到 404。

所以你需要改变你的路线到[HttpPost("login")]
它本身是行不通的,因为使用 Web.API,您不能有来自请求正文的多个操作参数,因此您需要一个复杂类型:

public class LoginInfo {
public string username { get; set; }
public string password { get; set; }
}

所以对于固定 Action 应该是这样的:
[HttpPost("login")]
[AcceptVerbs("POST")]
public Login Login(LoginInfo loginInfo)
{
Login login = new Login();

if (loginInfo.username == "user" && loginInfo.password == "pw") {
login.Success = true;
} else {
login.Success = false;
}

return login;
}

关于post - WebAPI - 属性路由 POST 不适用于 WebAPI Cors?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18036960/

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