2017-06-19 72 views
1

我在一個簡單的應用程序中遇到了Xamarin的HttpClientPutAsync方法的問題。它有一個ListActivity子類,OnListItemClick方法重寫。xamarin中的ObjectDisposedException HttpClient.PutAsync

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(); 
     } 
    } 
} 

我總是得到一個ObjectDisposedExceptionhttpClient.PutAsync。它說System.Net.Sockets.Socket被處置。

但是,如果我將PutAsync更改爲GetAsync一切正常。

我在做什麼錯?

+0

只是我在使用HttpClient時學到的一個快速提示:您可能希望保存HttpClient實例並將其重用於多個請求。這就是它的設計如何使用。 –

回答

0

我找到了原因。沒有控制器註冊來處理Web服務上的切換方法。當這是固定的,我成功地得到200 OK。但我仍然想知道爲什麼PutAsync給了我ObjectDisposedException而不是更合適的錯誤請求。

相關問題