から、動作時間を応答していません。次のようにWebRequestクラスのGetResponse私はREST WebサービスへのPOSTを介してデータを送信し、処理後の応答をダウンロードするには、追加のHttpWebRequestとアップが従うことのHttpWebRequestを作成しようとしています
POSTは、Webサービスまでのバイナリデータを送信している:
HttpWebRequest uploadRequest = (HttpWebRequest)WebRequest.Create(baseAddress + uploadURIRequest);
uploadRequest.Timeout = Timeout.Infinite;
uploadRequest.ReadWriteTimeout = Timeout.Infinite;
uploadRequest.Method = "POST";
uploadRequest.ContentLength = fileInfo.Length;
uploadRequest.ContentType = "application/octet-stream";
using (Stream writeStream = uploadRequest.GetRequestStream())
{
using (FileStream readStream = new FileStream(fileStreamFileName, FileMode.Open, FileAccess.Read))
{
byte[] data= new byte[readStream.Length];
int bytesRead = readStream.Read(data, 0, (int)readStream.Length);
writeStream.Write(data, 0, bytesRead);
readStream.Close();
}
writeStream.Close();
}
その後、次の要求は、サーバー上のデータを処理し、ステータス応答を返すために、Webサービスを伝えるために作られています。
HttpWebRequest processRequest = (HttpWebRequest)WebRequest.Create(baseAddress + processURIRequest);
processRequest.Timeout = 10000;
processRequest.ReadWriteTimeout = 10000;
processRequest.ContentType = "GET";
HttpWebResponse processRequestResponse = (HttpWebResponse)processRequest.GetResponse();
using (Stream processRequestResponseStream = processRequestResponse.GetResponseStream())
{
//Do stuff...
}
コンテンツタイプを変更すると、XMLデータに使用できます。しかし、上記のようにバイナリデータを保持すると、タイムアウトを10秒以上に増やしても、操作は常にタイムアウトします。それがやっている処理は、戻ってくるのにこの時間がかかりません。
私はデバッグする場合、それはいつものGetResponseとラインでハング:
この問題を解決し、ストリームへの書き込み後HttpWebResponse uploadRequestResponse = (HttpWebResponse)uploadRequest.GetResponse();
を追加
HttpWebResponse processRequestResponse = (HttpWebResponse)processRequest.GetResponse();
あなたのプロセスの要求が正しくセットアップ見えません。 ContentTypeを取得し、コンテンツの長さまたはメソッドの設定がないように設定しました – dbugger
コードにOff-by-oneエラーはありませんか? ContentLength = FileStream.Lengthを設定しますが、FileStream.Length-1バイトのみをアップロードします。 – feroze
申し訳ありませんが、私がここに投稿したコードを単純化しようとして間違いでした。 – jkh