.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 端点的主要内容,如果未能解决你的问题,请参考以下文章
Grid 控件的 RenderSize 在 Windows 10 [.NET Framework 4.6.2] 和 Windows 7[.NET Framework 4] 中有所不同
.net framework(4.6.2) 迁移 .net core(2.2) 总结
在 4.6.2 Framework 中部署 .NET Standard 程序集 (Microsoft.AspNetCore.SignalR.Client)
.Net Framework 4.6.1 不默认为 TLS 1.2
ASP.NET Framework 4.6.2 SignalR 和 Redis 背板未连接
解决VS2013调试ASP.NET中无法调试的问题:当前不会命中断点。在 XXXX.dll 中找到了 XXX.cs 的副本,但是当前源代码与 XXXX.dll 中内置的版本不同。