使用JSON的ASP.NET 3.5 C#HTTP Post错误

使用JSON的ASP.NET 3.5 C#HTTP Post错误,c#,asp.net,.net,json,C#,Asp.net,.net,Json,我尝试了许多不同的问题来寻找答案,但我从未找到一个可以解决这个问题的答案。我可以使用ASP.NET 4.5 Framework发出HTTP请求,但我需要为3.5版执行此操作,显示以下错误: 基础连接已关闭:发送时发生意外错误 代码如下所示。任何帮助都将不胜感激 var httpWebRequest = (HttpWebRequest)WebRequest.Create(this.baseUrl + "/api_users"); httpWebRequest.Con

我尝试了许多不同的问题来寻找答案,但我从未找到一个可以解决这个问题的答案。我可以使用ASP.NET 4.5 Framework发出HTTP请求,但我需要为3.5版执行此操作,显示以下错误:

基础连接已关闭:发送时发生意外错误

代码如下所示。任何帮助都将不胜感激

        var httpWebRequest = (HttpWebRequest)WebRequest.Create(this.baseUrl + "/api_users");
        httpWebRequest.ContentType = "application/json";
        httpWebRequest.Accept = "application/json";
        httpWebRequest.Method = "POST";
        httpWebRequest.KeepAlive = false;
        //httpWebRequestProtocolVersion = HttpVersion.Version10;


        using (var streamWriter = new StreamWriter(httpWebRequest.GetRequestStream()))
        {
            streamWriter.Write(json);
        }

        var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse();
        using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))
        {
            if (this.debug == true)
            {
                var result = streamReader.ReadToEnd();
                this.emailBody += "User POST Request Successful: " + result + "<br /><br />";
            }
        }
var httpWebRequest=(httpWebRequest)WebRequest.Create(this.baseUrl+“/api_users”);
httpWebRequest.ContentType=“应用程序/json”;
httpWebRequest.Accept=“application/json”;
httpWebRequest.Method=“POST”;
httpWebRequest.KeepAlive=false;
//httpWebRequestProtocolVersion=HttpVersion.Version10;
使用(var streamWriter=newstreamwriter(httpWebRequest.GetRequestStream()))
{
streamWriter.Write(json);
}
var httpResponse=(HttpWebResponse)httpWebRequest.GetResponse();
使用(var streamReader=newstreamreader(httpResponse.GetResponseStream())
{
if(this.debug==true)
{
var result=streamReader.ReadToEnd();
this.emailBody+=“用户POST请求成功:“+result+”

”; } }
通常,我如何将字符串写入requeststream如下所示:

        if (httpMethod == HttpMethods.POST)
        {
            var postData = "some string";
            var postBytes = Encoding.UTF8.GetBytes(postData);
            request.ContentLength = postBytes.Length;

            using (var postStream = request.GetRequestStream())
            {
                postStream.Write(postBytes, 0, postBytes.Length);
                postStream.Flush();
                postStream.Close();
            }
        }

不要忘记将ContentLength设置为确切的字节数。

ProTip:如果您不需要流行为和所有内容,则比普通的
HttpWebRequest
更易于使用,并且可以从.NET 1.1.set urlencoding属性beore发送请求,HttpWebRequest.ContentType=“application/x-www-form-urlencoded”;。这个问题只针对POST吗?或者在“get”中出现相同的错误?在我添加内容类型时也会出现相同的错误。此问题发生在所有4个主要HTTP请求上:GET、POST、PUT和DELETE。如果您的代码在4.5而不是3.5下工作,那么调试此问题的最简单方法是使用工具,例如Fiddler,然后在.NET4.5下运行,然后在.NET3.5下运行,看看这两个请求之间有什么区别。我刚刚测试了WebClient类,但它不起作用。错误似乎是相同的,因此它必须是HttpWebRequest对象内具有KeepAlive或ServicePoint.Expect100Continue的内容。我将它们设置为false,但它们仍然不起作用。