【发布时间】:2023-03-29 06:03:01
【问题描述】:
我有一个在 ASP.NET Core 2.2 之上使用 C# 编写的应用程序。我创建了一个控制器来响应名为Update 的PATCH 请求。这是我的控制器
[Route("api/[controller]"), ApiController, Produces("application/json")]
public class CategoriesController : ControllerBase
{
[HttpPatch("{propertyId}/{listId}/{isOn}"), Authorize]
public ActionResult<bool> Update(int propertyId, int listId, bool isOn)
{
// Do something
return true;
}
}
另外,为了在用户未获得授权而不是重定向时返回 401 错误,我将以下代码添加到我的 Startup 类中
services.ConfigureApplicationCookie(config =>
{
config.Events = new CookieAuthenticationEvents
{
OnRedirectToLogin = ctx =>
{
if (ctx.Request.Path.StartsWithSegments("/api", StringComparison.CurrentCultureIgnoreCase))
{
ctx.Response.StatusCode = (int)HttpStatusCode.Unauthorized;
}
else
{
ctx.Response.Redirect(ctx.RedirectUri);
}
return Task.FromResult(0);
}
};
});
现在要使用 jQuery 调用此 API,我做了以下操作
$('.update-property').click(function (e) {
e.preventDefault();
var obj = $(this);
$.ajax({
url: '/api/Categories/Update',
type: 'PATCH',
data: {
'propertyId': obj.data('property-id'),
'listId': obj.data('list-id'),
'isOn': obj.data('is-on') === 'True' ? 'false' : 'true'
},
success: function (response) {
console.log(response);
// if response unauthorized, redirect to the login page with the ReturnUrl
// else if response.data is true then change the icon
}
});
});
但是这个请求一直返回一个 404 http 错误代码。我在开发者工具中检查了这个问题,我看到参数设置正确并且 URL 是有效的。
如何正确处理这个 PATCH 请求?
【问题讨论】:
-
您在调试时遇到此错误吗?还是在 IIS 主机上?还是其他地方?
-
我在控制台中收到错误消息。请求永远不会到达控制器
标签: c# asp.net-core asp.net-core-mvc asp.net-core-2.0 asp.net-core-2.2