我已经创建了一个 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;
}
}
现在我可以启动我的 Web 应用程序来托管我的 WebApi。
然后我创建了一个简单的控制台应用程序来调用我的 WebApi 函数
static void Main(string[] args)
{
//WebClient webClient = new WebClient();
//byte[] data = webClient.DownloadData("http://localhost:51762/api/EWebApi/ByEntryFilter/2/");
//string date = System.Text.Encoding.Default.GetString(data);
HttpClient client = new HttpClient();
client.BaseAddress = new Uri("http://localhost:51762/");
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
HttpResponseMessage response = client.GetAsync("api/EWebApi/ByEntryFilter/2").Result; // Blocking call!
if (response.IsSuccessStatusCode)
{
//Never Reached because auf 405 method not allowed
}
}
在这里我总是得到 405 方法不允许错误。同时使用 WebClient 和 HttpClient 调用。
当我使用默认 ApiRoute 并使用 GET 时,...动词一切正常。
那不是“WebDav”问题,没有安装,在我的Web.Config中我用“”删除了它......
当我在我的 WebProject 内的网站上使用带有本地 jQuery AJAX 调用的路由时,我的 ApiRoute 也像魅力一样工作,没有 405 错误。