.NET Framework 4.6.2 无法命中 POST 端点
Posted
技术标签:
【中文标题】.NET Framework 4.6.2 无法命中 POST 端点【英文标题】:.NET Framework 4.6.2 Unable to hit POST endpoint 【发布时间】:2021-03-27 21:19:16 【问题描述】:我创建了一个 .NET Framework 4.6.2 WEB API,在我的 AuthController 中我创建了一个接受参数的测试端点。我无法达到这个端点。我得到的错误是: "MessageDetail": "在控制器 'Auth' 上找不到与名称 'Test' 匹配的操作。"
端点:
[Route("api/auth")]
[EnableCors(origins: "*", headers: "*", methods: "*")]
public class AuthController : ApiController, IDisposable
[HttpPost]
[Route("Test")]
public HttpResponseMessage Test([FromBody] object response)
return Request.CreateResponse(HttpStatusCode.OK, "Success");
我的登录功能:
function LogIn()
InputData =
UserName: $("#Login_UserName").val(),
Password: $('#Login_Password').val()
;
console.log($("#Login_UserName").val());
console.log(InputData);
$.ajax(
type: "post",
url: 'https://localhost:44393' + '/api/auth/test',
contentType: 'application/json',
data: JSON.stringify(InputData),
success: function (data)
HideSmokeLoader();
console.log(data);
,
error: function (request)
console.log(request)
);
【问题讨论】:
错误是什么 您能否也将您的WebApiConfig
代码发布到您使用.MapHttpRoute
配置路由的位置
【参考方案1】:
尝试将控制器中的 Route 属性更改为 RoutePrefix。 所以:
[RoutePrefix("api/auth")]
[EnableCors(origins: "*", headers: "*", methods: "*")]
public class AuthController : ApiController, IDisposable
创建一个新项目并进行与您一样的设置。然后使用邮递员调用端点并得到相同的“未找到任何操作......”。 Route 属性是 Action 的完整路径 - 因此,如果您要调用 https://localhost:44393/Test,您将到达控制器。
【讨论】:
【参考方案2】:像这样在 Action 本身上添加您的 Route
-
[EnableCors(origins: "*", headers: "*", methods: "*")]
public class AuthController : ApiController, IDisposable
[HttpPost]
[Route("api/auth/test")]
public HttpResponseMessage Test([FromBody] object response)
return Request.CreateResponse(HttpStatusCode.OK, "Success");
【讨论】:
【参考方案3】:将 [Route("api/auth")] 更改为 [RoutePrefix("api/auth")] 因为 路由属性 放置在控制器或动作上以通过路由直接公开它。当放置在控制器上时,它适用于没有任何 System.Web.Mvc.RouteAttribute 的操作。
RoutePrefixAttribute
使用适用于控制器内所有操作的路由前缀注释控制器。
【讨论】:
以上是关于.NET Framework 4.6.2 无法命中 POST 端点的主要内容,如果未能解决你的问题,请参考以下文章