繁体   English   中英

尝试在ASP.NET MVC中对控制器进行Ajax调用时出现400错误的请求

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM