Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 400尝试在ASP.NET MVC中调用控制器时请求错误_C#_Asp.net_Ajax_Asp.net Mvc - Fatal编程技术网

C# 400尝试在ASP.NET MVC中调用控制器时请求错误

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

所以我一直在努力从CSHTML页面向ASP.NETMVC网站应用程序中的控制器发出一个简单的请求。我正在使用Ajax尝试一个删除调用:

$.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尝试过了。请也发布你的控制器类代码