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 内の Web サイトでルートをローカルの jQuery AJAX 呼び出しで使用している場合、ApiRoute も魅力的に機能し、405 エラーは発生しません。