üzerinde bekliyor kullanırken durum atma değil:HttpClient Bir son nokta almak ve bir önbelleğe yazmak için aşağıdaki kodu kullanıyorum GetAsync
public async Task UpdateCacheFromHttp(string Uri)
{
if (string.IsNullOrEmpty(Uri))
return;
var httpClient = new HttpClient();
var response = await httpClient.GetAsync(Uri);
if ((response != null) && (response.IsSuccessStatusCode))
{
var responseStream = await response.Content.ReadAsStreamAsync();
WriteToCache(responseStream);
}
}
kod IIS üzerinde çalışıyor.
Son noktaya ulaşılamıyorsa, GetAsync'in bir istisna atmasını beklerim. Bir Try-Catch ile bile, asla başarısız gibi görünmüyor. GetAsync asla geri dönmez (HttpClient üzerinde 5 saniyelik bir zaman aşımı denedim, hala dönmedim).
Bu bir istisna yapar:
public Task UpdateCacheFromHttp(string Uri)
{
var updateCacheTask = Task.Factory.StartNew(new Action(() =>
{
if (string.IsNullOrEmpty(Uri))
return;
var httpClient = new HttpClient();
var response = httpClient.GetAsync(Uri).Result;
if (response.IsSuccessStatusCode)
{
var responseStream = response.Content.ReadAsStreamAsync().Result;
WriteToCache(responseStream);
}
}));
return updateCacheTask;
}
beklediğim "uzak sunucuya bağlanılamıyor" olsun.
IIS'de çalışan kodla ilgili bir şey olduğundan şüpheleniyorum, ama neden? Yeni bir göreve başlamak gerekmeden istisnayı düzgün bir şekilde atmak için nasıl alabilirim?
Bu oldukça sezgidir. Teşekkürler. – Askolein
+1, Sezginiz harika bir şeydir. – Valentin