C# 400尝试在ASP.NET MVC中调用控制器时请求错误
所以我一直在努力从CSHTML页面向ASP.NETMVC网站应用程序中的控制器发出一个简单的请求。我正在使用Ajax尝试一个删除调用:C# 400尝试在ASP.NET MVC中调用控制器时请求错误,c#,asp.net,ajax,asp.net-mvc,C#,Asp.net,Ajax,Asp.net Mvc,所以我一直在努力从CSHTML页面向ASP.NETMVC网站应用程序中的控制器发出一个简单的请求。我正在使用Ajax尝试一个删除调用: $.ajax({ url: "/company/delete", type: "DELETE", success: function (e) { showAlert('Success!'); } }); 在控制器端返回一个JSON: public class CompanyController : BaseCon
$.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错误请求错误(至少不是404)
我没有启动该项目,因此我不知道是否有任何其他配置可以从视图中设置和访问控制器。请注意,我可以从Ajax访问我的API,也可以从控制器访问API,但使用Ajax从视图访问控制器并不成功。将控制器函数返回类型更改为ActionResult,而不是JsonResult
[HttpDelete]
[Route("company/delete")]
public ActionResult DeleteCompany()
{
return Json("ok");
}
原来是坏的IIS配置。添加规则以接受每种类型的请求都有效 这是
web.config
中的处理程序:
<add name="aspNetCore" path="*" verb="GET,HEAD,POST,DEBUG,DELETE,PUT" modules="AspNetCoreModuleV2" resourceType="Unspecified" requireAccess="None" />
它改变了什么?您是否尝试过指定[路线(“/company/delete”)]
?(注意前面的斜杠)@Alexander刚刚试过,仍然收到错误400返回,同样的事情。你可能需要添加动词来删除。不确定默认情况下是否存在。是否确实要使用“删除”而不是“获取”或“发布”?公司是一个文件吗?@pcalkins不仅仅是DELETE方法不起作用,我已经用POST和GET尝试过了。请也发布你的控制器类代码