WebAPI无法调用Put方法

时间:2013-06-22 20:56:28

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

我在服务器上有以下代码:

public class UploadController : ApiController
{

    public void Put(string filename, string description)
    {
        ...
    }

    public void Put()
    {
        ...
    }

并尝试从客户端调用它:

        var clientDescr = new HttpClient();

        var postData = new List<KeyValuePair<string, string>>();
        postData.Add(new KeyValuePair<string, string>("filename", "test"));
        postData.Add(new KeyValuePair<string, string>("description", "100"));

        HttpContent contentDescr = new FormUrlEncodedContent(postData);

        clientDescr.PutAsync("http://localhost:8758/api/upload", contentDescr).ContinueWith(
            (postTask) =>
            {
                postTask.Result.EnsureSuccessStatusCode();
            });

但是这段代码调用了第二个put方法(没有参数)。为什么以及如何正确调用第一个put方法?

1 个答案:

答案 0 :(得分:1)

这里有几个选项:

您可以选择传递查询字符串中的参数,只需将URI更改为:

即可

http://localhost:8758/api/upload?filename=test&description=100

或者您可以让Web API通过将操作更改为以下内容来解析表单数据:

public void Put(FormDataCollection formData)
{
    string fileName = formData.Get("fileName");
    string description = formData.Get("description");
}

您还可以选择创建一个具有fileName和description属性的类,并将其用作参数,Web API应该能够为您正确绑定它。