首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >405方法不允许Web API

405方法不允许Web API
EN

Stack Overflow用户
提问于 2013-03-30 20:53:45
回答 18查看 268.9K关注 0票数 99

这个错误很常见,我尝试了所有的解决方案,但都不起作用。我已经在控制面板中禁用了WebDAV发布,并将以下内容添加到我的web配置文件中:

代码语言:javascript
复制
  <handlers>
  <remove name="WebDAV"/>
  </handlers>
  <modules runAllManagedModulesForAllRequests="true">
  <remove name="WebDAVModule"/>
  </modules>

错误仍然存在。这是控制器:

代码语言:javascript
复制
   static readonly IProductRepository repository = new ProductRepository();

    public Product Put(Product p)
    {
        return repository.Add(p);
    }

方法实现:

代码语言:javascript
复制
 public Product Add(Product item)
    {
        if (item == null)
        {
            throw new ArgumentNullException("item");
        }
        item.Id = _nextId++;
        products.Add(item);
        return item;
    }

这就是抛出异常的地方:

代码语言:javascript
复制
client.BaseAddress = new Uri("http://localhost:5106/");
client.DefaultRequestHeaders.Accept.Add(
new MediaTypeWithQualityHeaderValue("application/json"));      
var response = await client.PostAsJsonAsync("api/products", product);//405 exception

有什么建议吗?

EN

回答 18

Stack Overflow用户

回答已采纳

发布于 2013-03-30 20:58:41

您是来自客户端的POSTing:

代码语言:javascript
复制
await client.PostAsJsonAsync("api/products", product);

不是PUTing。

您的Web API方法只接受PUT请求。

所以:

代码语言:javascript
复制
await client.PutAsJsonAsync("api/products", product);
票数 71
EN

Stack Overflow用户

发布于 2014-02-25 05:20:00

我也有同样的例外。我的问题是我使用了:

代码语言:javascript
复制
using System.Web.Mvc; // Wrong namespace for HttpGet attribute !!!!!!!!!
[HttpGet]
public string Blah()
{
    return "blah";
}

应该是

代码语言:javascript
复制
using System.Web.Http; // Correct namespace for HttpGet attribute !!!!!!!!!
[HttpGet]
public string Blah()
{
    return "blah";
}
票数 64
EN

Stack Overflow用户

发布于 2014-08-14 23:39:10

我的问题原来是WebAPI中的属性路由。我创建了一个自定义路由,它将其视为GET,而不是WebAPI发现它是一个POST

代码语言:javascript
复制
    [Route("")]
    [HttpPost] //I added this attribute explicitly, and it worked
    public void Post(ProductModel data)
    {
        ...
    }

我知道这一定是愚蠢的(耗费了你一整天的时间)

票数 15
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15718741

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档