2017-06-19 10 views
1

XamarinのHttpClientPutAsyncメソッドの問題が簡単なアプリケーションで発生しました。それにはOnListItemClickメソッドがオーバーライドされたListActivityサブクラスがあります。xamarinのObjectDisposedException HttpClient.PutAsync

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での取得:

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は、1つの方法だけが含まれています。それはSystem.Net.Sockets.Socketが処分されたと言います。

PutAsyncからGetAsyncに変更しても問題ありません。

私は間違っていますか?

+0

HttpClientを使用しているときに学んだちょっとしたヒント:HttpClientインスタンスを保存して、複数の要求に対して再利用したい場合があります。それがどのように使用するように設計されたのですか。 –

答えて

0

私はその理由を見つけました。 WebサービスにToggleメソッドを処理するためのコントローラが登録されていませんでした。これが修正されたら、200 OKに成功しました。しかし、私はまだ、PutAsyncが、より適切なBad Requestの代わりにObjectDisposedExceptionを私に与えたのかと不思議です。

関連する問題