xamarin HttpClient.PutAsync中的ObjectDisposedException

时间:2017-06-19 02:30:45

标签: c# android xamarin

我在一个简单的应用程序中遇到了Xamarin的HttpClient PutAsync方法的问题。它有一个ListActivity子类,并覆盖OnListItemClick方法。

protected override async void OnListItemClick(ListView l, View v, int position, long id)
{
    var item = this.itemList[position];

    var core = new MyClass();
    await core.Toggle(item);
}

MyClass只包含一种方法:

internal async Task Toggle(string id)
{
    using (var httpClient = new HttpClient())
    {
        var content = new StringContent("test");

        var url = $"http://192.168.1.35/api/Toggle/{id}"

        using (var result = await httpClient.PutAsync(url, content))
        {
            result.EnsureSuccessStatusCode();
        }
    }
}

我总是在ObjectDisposedException中获得httpClient.PutAsync。它说System.Net.Sockets.Socket被处置了。

但如果我将PutAsync更改为GetAsync,一切正常。

我做错了什么?

1 个答案:

答案 0 :(得分:0)

我找到了原因。没有注册控制器来处理Web服务上的Toggle方法。当这个问题得到解决后,我成功地获得了200分。但我仍然想知道为什么PutAsync给了我ObjectDisposedException而不是更合适的错误请求。