asp.net web api-JQuery对C#api的DELETE请求->;HTTP状态代码405

本文关键字:gt HTTP 状态 代码 请求 api-JQuery web net C#api DELETE asp | 更新日期: 2023-09-27 17:59:21

我在一台服务器上有一个用C#编写的WebApi,在另一台服务器中有一个网页试图使用JQuery:发送DELETE请求

<script>
$(function () {
    $("#Save").click(function () {
        $.ajax({
            type: "DELETE",
            url: "https://chad-test4.clas.uconn.edu/api/Employees/1",
            dataType: "json",
            success: function (data) {
                console.log("Response recieved");
                console.log("Success: " + JSON.stringify(data));
            },
            error: function() {
                console.log("Failed")
            }
          //  data: {"id": 1 }
        });
    });
});
</script>

这是我的控制器:

// DELETE: api/Employees/5
    //[ResponseType(typeof(JsonObjectContract))]
    public HttpResponseMessage Deleteemployee(int id)
    {
        employee employee = db.employees.Find(id);
        var jsonid = employee.id;

        if (jsonid == null)
        {
            return Request.CreateErrorResponse(HttpStatusCode.BadRequest, "Error: Employee does not exist.");
        }
        db.employees.Remove(employee);
        db.SaveChanges();
        var Success = this.Request.CreateResponse(HttpStatusCode.OK, "Success");
        Success.Content = new StringContent("{ Success: Success }", Encoding.UTF8, "application/json");
        return Success;
    }

我在控制台中收到的响应是:

XMLHttpRequest cannot load https://chad-test4.clas.uconn.edu/api/Employees/1. 
Invalid HTTP status code 405
create.htm:41 Failed

在对该主题进行研究后,我将Web.Config标题更改为建议的文本:

<system.webServer>
<modules runAllManagedModulesForAllRequests="true">
  <remove name="WebDAVModule"/>
  <remove name="FormsAuthentication" />
</modules>
<httpProtocol>
  <customHeaders>
    <clear />
    <add name="Access-Control-Allow-Origin" value="*" />
    <add name="Access-Control-Allow-Headers" value="Content-Type" />
    <add name="Access-Control-Allow-Methods" value="GET, POST, PUT, DELETE,   OPTIONS" />
  </customHeaders>
</httpProtocol>

我仍然得到同样的回应。任何建议都欢迎

asp.net web api-JQuery对C#api的DELETE请求->;HTTP状态代码405

HTTP 405状态代码不是"错误请求"而是"不允许方法"。

在WebApiConfig.cs文件中,为控制器配置的路由应指定控制器将在操作属性中接受的HTTP谓词。确保javascript中的type:设置为路由操作中匹配的HTTP谓词。

控制器中的方法可能还应该有一个描述其服务的动词的属性,例如[HttpPost]或[HttpDelete]。

例如,以下是我拥有的一个小型Api的路线配置。。。

public static class WebApiConfig
{
    /// <summary>
    /// Registers the WebAPI routes.
    /// </summary>
    /// <param name="config">The configuration.</param>
    public static void Register(HttpConfiguration config)
    {
        config.Routes.MapHttpRoute(
            name: "DefaultApi",
            routeTemplate: "api/{controller}/{id}",
            defaults: new { id = RouteParameter.Optional }
        );
        config.Routes.MapHttpRoute(
            name: "SOAInboundApi",
            routeTemplate: "api/{controller}",
            defaults: new { controller = "SOAInbound", action = "Post", id = RouteParameter.Optional }
        );
        config.Routes.MapHttpRoute(
            name: "LogFileApi",
            routeTemplate: "api/{controller}",
            defaults: new { controller = "LogFile", action = "Get", id = RouteParameter.Optional }
        );
    }
}

我有一个Default,它只是提供了一个静态视图,解释如何使用我的Api,一个接受HTTPPost的SOInbound和一个接受HTTP Get的LogFile。

405代码它与"HTPP坏请求"有关,这是REST API的一个错误,不,jQuery。

我建议解决以下问题:https://praneeth4victory.wordpress.com/2011/09/29/405-method-not-allowed/

我建议你把问题转到C#标签。