public static async Task<string> DownloadWebsiteAsStringAsync(WebRequest request) { if (request == null) { throw new ArgumentNullException(nameof(request)); } string response = string.Empty; using (HttpWebResponse resp = (HttpWebResponse)(await request.GetResponseAsyncExt().ConfigureAwait(false))) { if (resp == null) { request?.Abort(); } else { if (resp.StatusCode == HttpStatusCode.OK) { using (StreamReader sr = new StreamReader(resp.GetResponseStream())) { try { response = await sr.ReadToEndAsync().ConfigureAwait(false); } catch (Exception ex) { string message = string.Format(CultureInfo.CurrentCulture, "Requesting {0} failed", request.RequestUri.AbsoluteUri); LogException(ex, message); response = string.Empty; } } } else { string message = string.Format(CultureInfo.CurrentCulture, "Request failed: {0}", resp.StatusCode); await LogMessageAsync(message).ConfigureAwait(false); } } } return response; }