WebAPI DELETE - HTTP/1.1 405方法不允许
本文关键字:不允许 方法 DELETE HTTP WebAPI | 更新日期: 2023-09-27 18:01:52
我一直试图让删除工作,只是不能使它工作!
所有GET请求看起来都很好,但是如果我尝试使用delete动词,我就会得到上面的错误。
方法本身是可达的,如果我使它一个GET,但只要我添加[HttpDelete]属性,并尝试设置调用类型它失败。
方法:
[HttpDelete]
public void Delete(int id) {
// delete method.
}
调用:
remove: function(key) {
$.ajax({
url: MyApp.settings.endpoint + 'list/delete/1,
type: "DELETE"
});
}
它似乎挂在OPTIONS预请求?
请求:(Request-Line) OPTIONS /api/list/delete/1 HTTP/1.1
Host 192.168.1.139
User-Agent Mozilla/5.0 (Windows NT 6.1; WOW64; rv:31.0) Gecko/20100101 Firefox/31.0
Accept text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language en-US,en;q=0.5
Accept-Encoding gzip, deflate
Origin null
Access-Control-Request-Method DELETE
反应:
(Status-Line) HTTP/1.1 405 Method Not Allowed
Cache-Control no-cache
Pragma no-cache
Allow DELETE
Content-Type application/xml; charset=utf-8
Expires -1
Server Microsoft-IIS/7.5
X-AspNet-Version 4.0.30319
Access-Control-Allow-Origin *
Date Mon, 05 May 2014 02:54:38 GMT
Content-Length 96
我试过几乎所有能想到的网站。配置,让你删除WebDAV和WebDAVModule和混乱的ExtensionlessUrlHandler。
唯一的区别是我还包括了这个,以允许跨域。我真希望事情不会这么难。
<httpProtocol>
<customHeaders>
<clear />
<add name="Access-Control-Allow-Origin" value="*" />
</customHeaders>
</httpProtocol>
看起来您正在使用跨域调用,您是否为您的项目添加了CORS支持?
请注意,下面的代码是一个大锤,您可以选择性地启用每个控制器。查看以下链接了解更多信息:http://www.asp.net/web-api/overview/security/enabling-cross-origin-requests-in-web-api
using System.Web.Http;
namespace WebService
{
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
// New code
var cors = new EnableCorsAttribute("www.example.com", "*", "*");
config.EnableCors(cors);
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
}
}
}
请在Startup.cs中启用跨域资源共享(CORS)
services.AddCors(options =>
{
options.AddPolicy("CorsPolicy",
builder => builder.AllowAnyOrigin()
.AllowAnyMethod()
.AllowAnyHeader()
.AllowCredentials());
});
更多细节:https://github.com/shahedbd/DotNetCoreRestAPI