非同期の HttpWebRequest 呼び出しを行う MVC Web API を作成しています。2 つの異なる例外が発生しています。以下は私が使用している方法です。
最初の例外は、「このストリームはシーク操作をサポートしていません」です。それはresponseStreamで起こっています。
2 番目の例外は、「このストリームではタイムアウトはサポートされていません」であり、これは MemoryStream コンテンツで発生しています。
私は何を間違っていますか?私はググっていますが、実際には解決策が見つかりません。
ありがとう、
ロンダ
private async Task GetHtmlContentAsync(string requestUri, string userAgent, string referrer, bool keepAlive, TimeSpan timeout, bool forceTimeoutWhileReading, string proxy, string requestMethod, string type) { //保持する文字列 Response string output = null;
//create request object
var request = (HttpWebRequest)WebRequest.Create(requestUri);
var content = new MemoryStream();
request.Method = requestMethod;
request.KeepAlive = keepAlive;
request.Headers.Set("Pragma", "no-cache");
request.Timeout = (Int32)timeout.TotalMilliseconds;
request.ReadWriteTimeout = (Int32)timeout.TotalMilliseconds;
request.Referer = referrer;
request.Proxy = new WebProxy(proxy);
request.UserAgent = userAgent;
try
{
using (WebResponse response = await request.GetResponseAsync().ConfigureAwait(false))
{
using (Stream responseStream = response.GetResponseStream())
{
if (responseStream != null)
{
await responseStream.CopyToAsync(content);
}
}
var sr = new StreamReader(content);
output = sr.ReadToEnd();
sr.Close();
}
}
catch (Exception ex)
{
output = string.Empty;
var message = ("The API caused an exception in the " + type + ".\r\n " + requestUri + "\r\n" + ex);
Logger.Write(message);
}
return output;
}