[英]400 Bad Request when trying Ajax call to Controller in ASP.NET MVC
因此,我一直在努力从CSHTML页面向ASP.NET MVC网站应用程序中的Controller发出一个简单的请求。 我正在使用Ajax尝试DELETE调用:
$.ajax({
url: "/company/delete",
type: "DELETE",
success: function (e) {
showAlert('Success!');
}
});
只需在控制器端返回JSON:
public class CompanyController : BaseController
{
protected readonly IHttpClientFactory _clientFactory;
public CompanyController(IHttpClientFactory clientFactory)
{
_clientFactory = clientFactory;
}
[HttpDelete]
[Route("company/delete")]
public JsonResult DeleteCompany()
{
return Json("ok");
}
}
BaseController.cs
:
[Authorize(Policy = "IsLoggedIn")]
public class BaseController : Controller
{ }
我看到的所有其他实现都是这样的。 我尝试使用@Url.Action("DeleteCompany", "Company")
作为Ajax URL,删除路由并请求/Company/DeleteSite
,在使用身份验证时添加[AllowAnonymous]
标签,但没有任何效果。 它将始终返回400 Bad Request错误(至少不是404 )。
我没有启动项目,所以我不知道是否还有其他配置可以从View设置和访问Controller。 请注意,我可以从Ajax访问我的API,也可以从Controller访问该API,但是从Ajax视图访问Controller并没有成功。
事实证明这是错误的IIS配置。 添加一条规则以接受每种有效的请求。
这是web.config
的处理程序:
<add name="aspNetCore" path="*" verb="GET,HEAD,POST,DEBUG,DELETE,PUT" modules="AspNetCoreModuleV2" resourceType="Unspecified" requireAccess="None" />
将控制器函数的返回类型更改为ActionResult而不是JsonResult
[HttpDelete]
[Route("company/delete")]
public ActionResult DeleteCompany()
{
return Json("ok");
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.