Asp.net web api 不允许ASP.NET Web API删除方法405方法
我正在vs 2012中使用asp.net web api开发一个项目。在这个项目中,当我想从一个单独的项目中删除一条记录时,我会收到一条错误消息“NetworkError:405 Method Not Allowed-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
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]和路由的注释了?我面临着同样的问题,请注意,如果你找到了一些解决方案/解决方法;谢谢!:)试着从