以下のコードブロックに「リモートサーバーがエラーを返しました:(403)禁止」というエラーメッセージが表示されます。具体的には、この行は失敗しています。var response =(HttpWebResponse)(request.GetResponse());
コードは私の開発マシンでは完全に機能しますが、本番環境では機能しません。両方の環境でIIS7.5を使用しています。両方のマシンにパッチが適用されています(すべてのWindows Updateがインストールされています)。4.0.NetFrameworkを使用します。なぜそれが1台のマシンで動作し、他のマシンでは動作しないのかわからない。
コード:
var uri = new Uri(url);
var request = (HttpWebRequest)WebRequest.Create(uri);
request.KeepAlive = false;
request.ProtocolVersion = HttpVersion.Version10;
request.Timeout = System.Threading.Timeout.Infinite;
request.Method = @"POST";
request.ContentType = @"application/x-www-form-urlencoded";
request.ContentLength = postData.Length;
request.UserAgent = @"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; .NET CLR 1.1.4322)";
request.Accept = "*/*";
//setup the stream variables and do the send/retrieve of data
Stream writeStream = request.GetRequestStream();
var bytes = System.Text.Encoding.ASCII.GetBytes(postData);
writeStream.Write(bytes, 0, bytes.Length);
writeStream.Close();
var response = (HttpWebResponse)(request.GetResponse());
var responseStream = response.GetResponseStream();
var readStream = new StreamReader(responseStream, Encoding.UTF8);
pageResponse = readStream.ReadToEnd();