ObjectDisposedException bile bu yüzden bertaraf ve aynı örneği kullanmıyorum false istemci işleyicisi ayarladıktan sonra

oy
0

stackoverflow diğer mesajları okuma, çoklu yöntemleri için aynı httpclient yeniden çalışıyorum ama hala hatayı alıyorum:

System.ObjectDisposedException: Cannot access a disposed object. Object name: 'System.Net.Http.HttpClient'.

public class Program
{
    private readonly static HttpClientHandler handler = new HttpClientHandler();
    private readonly static HttpClient client = new HttpClient(handler, false);

    public Program()
    {
        client.BaseAddress = new Uri();
        client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue(application/json));
    }


    public async IDictionary<string, object> GetCustomer(string customerId)
    {
        using (client)
        {
            try
            {
                 var response = await client.GetAsync().ConfigureAwait(false);
                 response.EnsureSuccessStatusCode();
                 var responseContent = await.result.Content.ReadAsStringAsync();
                 return JsonConvert.DeserializeObject<IDictionary<string, object>(responseContent);
            }
            catch { }
        }

    }

    public async IDictionary<string, object> GetOrdersByCustomerId(string customerId)
    {
        using (client)
        {
            try
            {
                 var response = await client.GetAsync().ConfigureAwait(false);
                 response.EnsureSuccessStatusCode();
                 var responseContent = await.result.Content.ReadAsStringAsync();
                 return JsonConvert.DeserializeObject<IDictionary<string, object>(responseContent);
            }
            catch { }
        }

    }
}

Ayrı bir dosyada, bu iki yöntemleri gibi birbiri ardına hakkını arayacağım:

var customer = programInstance.GetCustomer().GetAwaiter().GetResult();
var orders = programInstance.GetOrdersByCustomerId().GetAwaiter().GetResult();

Ben çağırdığınızda GetCustomer(), tepki TAMAM 200 ve ben en kısa sürede ben dediğimiz gibi ama istediğiniz bilgileri almak mümkün değilim GetOrdersByCustomerId(), ben o zaman daha önce de belirtildiği hata iletisi alıyorum.

Ben httpclient elden gerektiğini, aksi olup olmadığı hakkında okuyordum bazı insanlar işleyicisi kapma ve false elden ayarlayarak hata kurtuldum ama benim için işe yaradı gibi gözükmüyor nasıl.

Burada eksik bir şey var mı?

Oluştur 10/10/2019 saat 00:46
kaynak kullanıcı
Diğer dillerde...                            


1 cevaplar

oy
0

Hem senin yöntemler senin elden olduğunu eksik HttpClientherhangi elden nesne gibi, başka çağrılarında kullanılamaz hale (Akışları, ...)

Yeni örneğini isteyen ya HttpClientiçeride kullanıldığında, her zaman using(iyi bir fikir değil uygun dokümantasyon yüksek yük bekleniyorsa) veya uygulama kapanana kadar örneği tutun.

Cevap 10/10/2019 saat 00:58
kaynak kullanıcı

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more