2012-05-12 9 views
3

C#でHTTP POST WebRequestを作成し、httpsサイトにデータを投稿するコードがあります。その後、そのサイトは新しいURLにリダイレクトされ、いくつかのデータが返されます。ライブサイトでHttpWebRequest、Redirects、チャンクエンコードエラーが発生しましたが、IIS Expressローカルで動作します。

これはIIS Expressを実行しているローカルマシンで正常に動作しますが、プロダクションサーバーではContent-Length or Chunked Encoding cannot be set for an operation that does not write data.という例外がスローされます。

これは、コードは次のようになります。何が間違って

HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); 
request.AllowAutoRedirect = true; 
request.Method = "POST"; 
request.ContentType = "application/x-www-form-urlencoded"; 
request.ContentLength = data.Length; 
request.UserAgent = userAgent; 

StreamWriter stOut = new StreamWriter(request.GetRequestStream(), System.Text.Encoding.ASCII); 
stOut.Write(data); 
stOut.Close(); 

HttpWebResponse response = (HttpWebResponse)request.GetResponse(); 
if (response.StatusCode == HttpStatusCode.OK) 
{ 
    using (StreamReader stIn = new StreamReader(request.GetResponse().GetResponseStream())) 
    { 
     string responseHtml = stIn.ReadToEnd(); 
     Uri downloadUri = GetDownloadUri(responseHtml); 

     return downloadUri; 
    } 
} 

throw new HttpException((int)response.StatusCode, response.StatusDescription); 

任意のアイデアをして良い解決策は何でしょうか?

//ヨハン

+1

ContentLengthを設定する必要はありません。そのラインを外してみてください。 – Ben

+0

それは必要ではありませんでしたが、私はまだ同じエラーがあります。 SendChunked = falseを設定しようとしても。 –

+1

実際には、データバイト配列は何とか空白ですか? – feroze

答えて

0

私は同様の問題がありました。プロダクションでは、すべてのURLが自動的にhttpsにリダイレクトされます。 HttpWebRequestがリダイレクトを処理できず、この例外メッセージがスローされるようです。

関連する問題