Asp.net web api 不允许ASP.NET Web API删除方法405方法

Asp.net web api 不允许ASP.NET Web API删除方法405方法,asp.net-web-api,asp.net-routing,http-status-code-405,http-delete,Asp.net Web Api,Asp.net Routing,Http Status Code 405,Http Delete,我正在vs 2012中使用asp.net web api开发一个项目。在这个项目中,当我想从一个单独的项目中删除一条记录时,我会收到一条错误消息“NetworkError:405 Method Not Allowed-http://localhost:30777/api/Customer/1“ 在客户端站点代码中 get: function () { var deferred = $q.defer(); $http.get('`http://lo

我正在vs 2012中使用asp.net web api开发一个项目。在这个项目中,当我想从一个单独的项目中删除一条记录时,我会收到一条错误消息“NetworkError:405 Method Not Allowed-
http://localhost:30777/api/Customer/1“

在客户端站点代码中

get: function () {
            var deferred = $q.defer();

            $http.get('`http://localhost:30777/api/Customer`')
                 .success(deferred.resolve)
                .error(deferred.reject);

            return deferred.promise;
        },

        getDetail: function (customerID) {
            var deferred = $q.defer();
            resource.get({ id: customerID },
                    function (event) {
                        deferred.resolve(event);
                    },
                    function (response) {
                        deferred.reject(response);
                    });

            return deferred.promise;
        },

        saveCustomer: function (customer) {
            $http.post('`http://localhost:30777/api/Customer/SaveCustomer`', customer).
                success(function (status) {
                    if (status == 200) {
                        alert("This customer was saved");
                    }
                    else {
                        alert("This customer was not saved")
                    }
                }).
                //error(function (data, status, headers, config) {
                //    alert("Server is busy. Please try later");
                //});

                error(function () {
                    alert("Server is busy. Please try later");
                });
        },

        deleteCustomer: function (customerId) {

            $http.delete('`http://localhost:30777/api/Customer/1`').
            success(function (data, status, headers, config) {
                if (status == 200) {
                    alert("This customer was saved");
                }
                else {
                    alert("This customer was not saved");
                }
            }).
            error(function (data, status, headers, config) {
                alert("Server is busy. Please try later");
            });
        }
get, getDetail and saveCustomer functions works fine. only deleteCustomer function didn't work at all.

In api site code

---webapiconfig file I added cross support library.


public static class WebApiConfig
{
    public static void Register(HttpConfiguration config)
    {
        var cors = new EnableCorsAttribute("http://localhost:8488", "*", "*");
        //cors.SupportsCredentials = true;
        config.EnableCors(cors);


        config.Routes.MapHttpRoute(
            name: "DefaultApi",
            routeTemplate: "api/{controller}/{id}",
            defaults: new { id = RouteParameter.Optional }
        );
    }
}
--Api控制器

public class CustomerController : ApiController
{
private readonly ICustomerServices _services;

public CustomerController(ICustomerServices services)
{
    this._services = services;
}

[HttpGet]
public IEnumerable<Customer> Get()
{
    return _services.GetAllCustomer().ToList();
}

[HttpGet]
[Route("GetCustomerById")]
public Customer GetCustomerById(string Id)
{
    return _services.GetCustomerById(Id);
}

[HttpPost]
[Route("SaveCustomer")]
public HttpResponseMessage SaveCustomer([FromBody]Customer customer)
{
    try
    {
        _services.SaveCustomer(customer);
        return new HttpResponseMessage(HttpStatusCode.OK);
    }
    catch
    {
        return new HttpResponseMessage(HttpStatusCode.InternalServerError);
    }
}

//[HttpDelete]
//[Route("RemoveCustomer")]
public void Delete(int customerId)
{
    var tt = 0;

    tt = tt + 1;

}
公共类CustomerController:ApicController
{
专用只读ICustomerServices\u服务;
公共客户控制器(ICCustomerServices)
{
这是。_服务=服务;
}
[HttpGet]
公共IEnumerable Get()
{
return _services.GetAllCustomer().ToList();
}
[HttpGet]
[路线(“GetCustomerById”)]
公共客户GetCustomerById(字符串Id)
{
return\u services.GetCustomerById(Id);
}
[HttpPost]
[路线(“保存客户”)]
公共HttpResponseMessage SaveCustomer([FromBody]Customer)
{
尝试
{
_服务。保存客户(客户);
返回新的HttpResponseMessage(HttpStatusCode.OK);
}
抓住
{
返回新的HttpResponseMessage(HttpStatusCode.InternalServerError);
}
}
//[HttpDelete]
//[路线(“RemoveCustomer”)]
公共作废删除(int customerId)
{
var-tt=0;
tt=tt+1;
}
}

删除功能不起作用。其余的都很好

--web.config

    <validation validateIntegratedModeConfiguration="false"/>
<modules runAllManagedModulesForAllRequests="true">
  <remove name="WebDAVModule"/>
</modules>
<handlers>
  <remove name="WebDAV"/>
  <remove name="ExtensionlessUrlHandler-Integrated-4.0"/>
  <add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="*" type="System.Web.Handlers.TransferRequestHandler" resourceType="Unspecified" requireAccess="Script" preCondition="integratedMode,runtimeVersionv4.0"/>
</handlers>


似乎根本不起作用-我做错了什么?

我想你已经尝试过取消[HttpDelete]和路由的注释了?我面临着同样的问题,请注意,如果你找到了一些解决方案/解决方法;谢谢!:)试着从