接続を作成した後、IDを送信してから応答を保存し、何度も何度も(通常60〜100 IDまで)送信する必要があります。しかし、私はこのエラーを得たWebRequest複数の書き込みと読み取り
public void EThread()
{
HttpWebRequest HWRequest = (HttpWebRequest)WebRequest.Create(_AjaxURL);
HWRequest.Method = "POST";
HWRequest.ContentType = "text/xml; encoding='utf-8'";
string StrID;
while(!_RequiredIDs.IsEmpty)
if (_RequiredIDs.TryDequeue(out StrID))
Extract(StrID, ref HWRequest);
}
public void Extract(string ID, ref HttpWebRequest HWRequest)
{
string data = "strID=" + ID;
byte[] Bytes = Encoding.ASCII.GetBytes(data);
using (Stream SWriter = HWRequest.GetRequestStream())
{
SWriter.Write(Bytes, 0, Bytes.Length);
SWriter.Close();
}
HttpWebResponse resp = (HttpWebResponse)HWRequest.GetResponse();
using (Stream s = resp.GetResponseStream())
using (StreamReader sr = new StreamReader(s))
_RespnseCollection.Enqueue(sr.ReadToEnd());
}
:System.Net.WebException: 'The request was aborted: The connection was closed unexpectedly.
現在、私はそれをこのようにしました。もし私がHttpWebRequestをExtract
メソッドの中に入れたら、それは動作しますが、それは長く働きます。これは1つのスレッドでチェックされました。コードの何が間違っているか、またはサーバーがこれをサポートしていません。
あなたは、私はそれがworks'抽出メソッド内のHttpWebRequestを置く場合は 'によって何を意味しています。メソッドを呼び出すたびに、新しいHttpWebRequestオブジェクトを '再作成する 'ことを意味しますか?あなたの現在のコードでは、最初の使用後にリクエストストリームが閉じられ、後続の呼び出しでエラーが発生します。 –
毎回、「再作成」しますが、実行したくありません。私は 'SWriter.Close()'も削除します。同じエラー。私は 'WebClient'で使ったアプローチを提示しました。すべてがうまくいきましたが、この目的のために' WebClient'は十分ではありません。 –
すべてのIDを1回のリクエストで送信できますか? –