angular および WebAPI の PUT および DELETE リクエストで 405(メソッドが見つかりません) エラーが発生します。GET と POST は正常に動作しています。「SO」でこのタイプのエラーがあるすべてのソリューションを確認しましたが、うまくいきませんでした。WebConfigに必要なハンドラー (PUT/DELETE 動詞を使用) を追加し、IIS EXpress のapplicationhost.configを更新し、 WebDAVモジュールをアンインストールしましたが、問題は解決しません。
これが私のコントローラーコードです:
[RoutePrefix("api/BlogPost")]
public class BlogPostController : ApiController
{
// GET: api/BlogPost
public IQueryable<BlogPostModel> GetblogPostTb()
{
return db.blogPostTb;
}
// GET: api/BlogPost/5
[ResponseType(typeof(BlogPostModel))]
public IHttpActionResult GetBlogPostModel(int id)
{
BlogPostModel blogPostModel = db.blogPostTb.Find(id);
if (blogPostModel == null)
{
return NotFound();
}
return Ok(blogPostModel);
}
// PUT: api/BlogPost/5
[ResponseType(typeof(void))]
public IHttpActionResult PutBlogPostModel(int id, BlogPostModel blogPostModel)
{
if (!ModelState.IsValid)
{
return BadRequest(ModelState);
}
if (id != blogPostModel.ID)
{
return BadRequest();
}
db.Entry(blogPostModel).State = EntityState.Modified;
try
{
db.SaveChanges();
}
catch (DbUpdateConcurrencyException)
{
if (!BlogPostModelExists(id))
{
return NotFound();
}
else
{
throw;
}
}
return StatusCode(HttpStatusCode.NoContent);
}
[ResponseType(typeof(BlogPostModel))]
public IHttpActionResult DeleteBlogPostModel(int id)
{
BlogPostModel blogPostModel = db.blogPostTb.Find(id);
if (blogPostModel == null)
{
return NotFound();
}
db.blogPostTb.Remove(blogPostModel);
db.SaveChanges();
return Ok(blogPostModel);
}
}
クライアント側のコードは次のとおりです。
var updateBlogPost = function (id, blogPost) {
return $http.put(blogPostsUrl+"/"+id, blogPost)
.then(function (response) {
return response;
})
参考までに、Visual Studio Community 2015 で WebAPI2、IIS Express 10 を使用しています。これが IIS EXpress 10 のエラーなのか、コミュニティ バージョンの VS なのかわかりません。