Angularjs VS Community 2015中angular和WebAPI的PUT/DELETE给出405错误
我的angular和WebAPI中的PUT和DELETE请求中出现405(找不到方法)错误。GET和POST工作正常。我已经在“SO”上检查了所有存在此类错误的解决方案,但它不起作用。我已经在我的WebConfig中添加了所需的处理程序(带有PUT/DELETE动词),更新了IIS EXpress的applicationhost.config,还卸载了WebDAV模块,但问题仍然存在 这是我的控制器代码:Angularjs VS Community 2015中angular和WebAPI的PUT/DELETE给出405错误,angularjs,iis,asp.net-web-api,vs-community-edition,Angularjs,Iis,Asp.net Web Api,Vs Community Edition,我的angular和WebAPI中的PUT和DELETE请求中出现405(找不到方法)错误。GET和POST工作正常。我已经在“SO”上检查了所有存在此类错误的解决方案,但它不起作用。我已经在我的WebConfig中添加了所需的处理程序(带有PUT/DELETE动词),更新了IIS EXpress的applicationhost.config,还卸载了WebDAV模块,但问题仍然存在 这是我的控制器代码: [RoutePrefix("api/BlogPost")] public class Bl
[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);
}
}
仅供参考,我正在Visual Studio Community 2015中与WebAPI2、IIS Express 10合作。我不确定这是否是IIS EXpress 10或社区版VS的错误。这似乎是WebAPI属性路由的已知问题。 这里使用如下的DELETE和PUT方法更新AcceptVerbs和Route属性:
[ResponseType(typeof(void))]
[Route("{id:int}")]
[AcceptVerbs("PUT")]
public IHttpActionResult PutBlogPostModel(int id, BlogPostModel blogPostModel)
{
// Your code
}
并删除为:
[ResponseType(typeof(BlogPostModel))]
[Route("{id:int}")]
[AcceptVerbs("DELETE")]
public IHttpActionResult DeleteBlogPostModel(int id)
{
// Your Code
}
也可以对GET方法使用AcceptVerbs属性,因为这三个(GET、PUT、DELETE)具有相同的URL结构来调用它们的方法。这与VS Studio Community 2015无关。这就是WebAPI的实现方式谢谢。我从过去两天就被困在里面了。这对我来说很有效。再次感谢。
[ResponseType(typeof(BlogPostModel))]
[Route("{id:int}")]
[AcceptVerbs("DELETE")]
public IHttpActionResult DeleteBlogPostModel(int id)
{
// Your Code
}