C# HttpWebRequest、重定向、实时站点上的分块编码错误,但在本地IIS Express中有效

C# HttpWebRequest、重定向、实时站点上的分块编码错误,但在本地IIS Express中有效,c#,redirect,httpwebrequest,chunked-encoding,C#,Redirect,Httpwebrequest,Chunked Encoding,我有一些代码,可以用C#创建一个HTTP POST WebRequest,并将一些数据发布到https站点。然后该站点重定向到一个新的URL并返回一些数据 这在我运行IIS Express的本地计算机上运行得很好,但在我的生产服务器上抛出一个异常,即不能为不写入数据的操作设置内容长度或分块编码。 这是代码的样子: HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); request.AllowAutoRedirect =

我有一些代码,可以用C#创建一个HTTP POST WebRequest,并将一些数据发布到https站点。然后该站点重定向到一个新的URL并返回一些数据

这在我运行IIS Express的本地计算机上运行得很好,但在我的生产服务器上抛出一个异常,即不能为不写入数据的操作设置
内容长度或分块编码。

这是代码的样子:

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);
你知道哪里不对吗?好的解决方案是什么


//约翰

我也有类似的问题。在生产中,所有url都自动重定向到https。HttpWebRequest似乎无法处理重定向并抛出此异常消息。

我确信您不需要设置ContentLength。试着把那条线取出来。它是不需要的,但我还是犯了同样的错误。甚至尝试设置SendChunked=false。也许在生产环境中,您的数据字节数组是空的?