Asp.net mvc 使用自定义路由的ASP.NET Web API作为服务-不允许使用get 405方法

Asp.net mvc 使用自定义路由的ASP.NET Web API作为服务-不允许使用get 405方法,asp.net-mvc,web-services,asp.net-web-api,Asp.net Mvc,Web Services,Asp.net Web Api,我已经创建了一个ASP.NET Web API项目,我不想使用“PUT”、“GET”等动词。。。。因此,我在WebApiConfig中创建了自己的路线 Public static void Register(HttpConfiguration config) { config.Routes.MapHttpRoute( name: "DefaultApi", routeTemplate: "api/{controller}/{action}/{id}",

我已经创建了一个ASP.NET Web API项目,我不想使用“PUT”、“GET”等动词。。。。因此,我在WebApiConfig中创建了自己的路线

Public static void Register(HttpConfiguration config)
{
   config.Routes.MapHttpRoute(
       name: "DefaultApi",
       routeTemplate: "api/{controller}/{action}/{id}",
       defaults: new { id = RouteParameter.Optional }
      );
}
然后我创建了一个非常简单的ApiController

public class EWebApiController : ApiController
{
    public HttpResponseMessage ByEntryFilter(long? id)
    {
        HttpResponseMessage response = Request.CreateResponse<string>(HttpStatusCode.OK, "Test string");
        return response;
  }
}
这里我总是得到405方法不允许的错误。通过WebClient和HttpClient调用

当我使用默认ApiRoute并使用GET时。。。动词一切都有效

这不是“WebDav”问题,它没有安装,在我的Web.Config中,我用“…”删除了它


当我在我的WebProject内的一个网站上使用本地jQuery AJAX调用时,我的ApiRoute也像一个符咒一样工作,没有405错误。

如果您不使用Restful模式,请粘贴GET、PUT、DELETE、POST。。。您必须提供
属性
来告诉操作HTTP方法是什么:

[AcceptVerbs("GET", "HEAD")]
public HttpResponseMessage ByEntryFilter(long? id)
{
    HttpResponseMessage response = Request.CreateResponse<string>(HttpStatusCode.OK, "Test string");
    return response;
}
[AcceptVerbs(“GET”、“HEAD”)]
公共HttpResponseMessageByEntryFilter(长?id)
{
HttpResponseMessage response=Request.CreateResponse(HttpStatusCode.OK,“测试字符串”);
返回响应;
}

[HttpGet]
[ActionName(“ByEntryFilter”)]
公共HttpResponseMessageByEntryFilter(长?id)
{
HttpResponseMessage response=Request.CreateResponse(HttpStatusCode.OK,“测试字符串”);
返回响应;
}
更多信息请点击此处:

[AcceptVerbs("GET", "HEAD")]
public HttpResponseMessage ByEntryFilter(long? id)
{
    HttpResponseMessage response = Request.CreateResponse<string>(HttpStatusCode.OK, "Test string");
    return response;
}
[HttpGet]
[ActionName("ByEntryFilter")]
public HttpResponseMessage ByEntryFilter(long? id)
{
    HttpResponseMessage response = Request.CreateResponse<string>(HttpStatusCode.OK, "Test string");
    return response;
}