■現象
HttpWebRequestクラスを使いHTTPアクセスする際に、以下のエラーメッセージが出力され、
通信エラーになる。
基礎になる接続が閉じられました: 維持される必要があった接続が、サーバーによって切断されました
リクエスト先のURLは、BASIC認証がかけられており、リクエストする都度認証を通す必要がある。
■原因
必ず発生する訳ではなく、再現させることも出来ない。
はっきりとした原因は不明。
KeepAliveをデフォルト値(true)にしていたため、セッションが使いまわされることにより何らかの理由で発生したのか?
試行錯誤して以下対応によりエラーを回避することが出来た。
■対応
以下の1文を追加する。
req.KeepAlive = false;
//HTTPリクエストを作成する
HttpWebRequest req = PathUtil.getHttpWebRequest(uploadURL, true, new NetworkCredential("ユーザーID", "パスワード"));
req.Method = "POST";
req.KeepAlive = false;
request.PreAuthenticate = true;