Asp.net WebApi POST请求不起作用

时间:2016-02-01 15:24:02

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

我有一个web api方法,如下所示,

[Route("api/Nltk")]
[HttpPost]
public string Create([FromBody]string text)
{
    string result = "Error";
    //Assign result here
    return result;
}

当我发出POST请求时,出现404 - File or directory not found.错误。虽然在同一个api中的其他方法(都是GET方法)工作得很好。有关详细信息,http://ozgurakpinar.net/api/Nltk是完整的网址。

以下是迄今为止我尝试过的方法之一。

 var values = new Dictionary<string, string> {
    { "text", "This is a relatively short sentence." },
    };
    HttpClient client = new HttpClient();
    var content = new FormUrlEncodedContent(values);
    var result = client.PostAsync("http://ozgurakpinar.net/api/Nltk", content).Result;

编辑:我添加了FromBody属性后,最终调用了该方法,但text的值为null。

2 个答案:

答案 0 :(得分:1)

首先,我想你可能有一个错字。它应该是[FromBody]而不是[FormBody]。

其次,您需要在内容字符串前添加“=”。

即:

client.PostAsync("http://ozgurakpinar.net/api/Nltk", "=" + content)

答案 1 :(得分:0)

当您为您的值命名时,实际上您正在寻找具有该成员的类。在您的情况下,您将发布到接受class having a text member of string type的方法。

如果您需要发布到具有字符串参数的方法,则无需为其命名。以下是工作代码。

var values = new Dictionary<string, string> {{ "", "This is a relatively short sentence." }};
            var content = new FormUrlEncodedContent(values);
            var client = new HttpClient();
            var result = client.PostAsync("http://localhost:49923/api/Nltk", content).Result;
            Console.Write(result);