Web Api HttpPost方法不允许',

时间:2014-08-20 09:16:51

标签: c# api rest

我正在编写web api方法,用于检索国家/地区列表。方法的名称是 GetAllCountries 。方法接受许多参数(如pageno,pagesize,sortorder,其他过滤器等)。我没有使用多个参数创建方法,而是创建了具有上述属性的Dto。由于web api中的Get方法只能接受原始数据类型或简单dto,我选择了GetAllCountries作为post方法(它用 HttpPost 属性修饰),以便它可以接受复杂的dto。当我调用时来自客户端的strong> GetAllCountries 方法,我收到错误“StatusCode:405,ReasonPhrase:'Method Not Allowed',Version:1.1,Content:System.Net.Http.StreamContent,Headers”。 我知道我的方法名称是针对web api约定的(意思是方法名称以Get开头,但它实际上是一个帖子)。我已经检查了所有内容(如网址等),但我仍无法弄清楚为什么会出现错误。 以下是代码

        [HttpPost]
    public GetCountryListResponse GetAllCountries(GetAllCountriesRequest request)
    {
        return DestinationBl.GetAllCountries(request);
    }

1 个答案:

答案 0 :(得分:2)

听起来您可能对方法的输入有问题。 尝试在输入参数之前添加[FromBody]:

[HttpPost]
public Countries GetAllConuntries([FromBody]YorObject obj)
{}