【问题标题】:ASP.NET/MVC : The requested resource does not support http method 'GET'ASP.NET/MVC:请求的资源不支持 http 方法“GET”
【发布时间】:2015-09-01 05:29:11
【问题描述】:

我在 ApiController 中定义了一个方法。当方法定义如下:

public IEnumerable<QuestionResponse> Get() 

一切都很好。但是我想将参数传递给该方法,但是当我将该方法定义为

public IEnumerable<QuestionResponse> Get(int parid) 

响应是 405“请求的资源不支持 http 方法 'GET'”。

当没有为该方法定义参数时,这两个 url 都会被路由到该方法:

/api/questionresponse/224809
/api/questionresponse

但是当我为该方法定义一个参数时,这两个 url 都会导致 405 。

帮助?


FWIW

【问题讨论】:

  • 尝试将参数名称从 parid 更改为 id,它应该可以工作

标签: c# asp.net-mvc asp.net-web-api


【解决方案1】:

如果你检查路由,你可以看到默认模板使用参数{id}

  config.Routes.MapHttpRoute( 
                name: "DefaultApi", 
                routeTemplate: "api/{controller}/{id}", 
                defaults: new { id = RouteParameter.Optional } 
            ); 

所以你需要将控制器签名更改为

public IEnumerable<QuestionResponse> Get(int id) 

或者写一个自定义路由来支持参数parid

【讨论】:

  • 感谢您的回复,非常感谢。我可以看到您的建议的逻辑,但是当我重命名参数时,我仍然得到相同的结果.. 抱歉取消...我没有正确测试它。只是再次测试。
  • 非常感谢,这确实是答案。我看过 WebApiConfig.cs 但我认为“id”是一个占位符而不是实际的名称映射......不知道为什么我会这么认为!再次感谢。
猜你喜欢
  • 2013-07-31
  • 1970-01-01
  • 2020-09-19
  • 2012-06-15
  • 2016-11-26
  • 2012-09-27
  • 2014-01-28
  • 2015-10-08
  • 1970-01-01
相关资源
最近更新 更多