ASP.NET 网站不允许 Axios PUT 访问(405 方法不允许)

ASP.NET Web Site Not Allowing Axios PUT Access (405 Method Not Allowed)

我已经设置了一个控制器并为我所有的 GET 请求工作,但是当涉及到 PUT 请求我的网站时( 不是 Web App,如果这有什么不同的话)正在返回一个 405.

我已经在我的Global.asax Application_Start()中定义了其他路线的路线,这是第一个,所以应该首先评估它(如果我的理解是正确的):

void Application_Start(object sender, EventArgs e)
{
    System.Net.ServicePointManager.SecurityProtocol = System.Net.SecurityProtocolType.Tls
            | System.Net.SecurityProtocolType.Tls11
            | System.Net.SecurityProtocolType.Tls12;

    RouteTable.Routes.MapHttpRoute("FilteredSpecialOrders",
        routeTemplate: "api/sales/filteredRequests",
        defaults: new { controller = "Sales", action = "filteredRequests" });

    // subsequent routes are here
}

我的 SalesController 有一个方法,该方法具有请求类型的正确属性 (Put) 和与我的 routeTemplate 匹配的操作名称,以及 [FromBody]参数上的属性:

[HttpPut, ActionName("filteredRequests")]
public IHttpActionResult PutSpecialOrders([FromBody] RequestFilter filter)
{ 
    // do the needful
}

...我的客户端代码将消息正文 (filter) 创建为 JavaScript object 并通过 axios 发送 .put 请求:

getFilteredRequests: async function () {
    let filter = {
        name: this.name,
         age: this.yearsOld,
        /* other name/value pairs of course */
    };

    const response = await axios.put(salesApi + 'filteredRequests', filter);
    let data = response.data;
    return data;
}

...但我总是得到 405 - Method Not Allowed. 我忘记了什么?我不确定在正文中发送的 JSON 对象是如何序列化到我的 RequestFilter 对象中的——这是自动发生的还是我需要在某个地方定义它?我已确保两端的名称相同,但除此之外...

我编辑了我的 web.config 以删除每个 this post 的 WebDAV 位 - 但我还必须将我的管道从 classic 模式切换到 integrated 才能让它工作。