HttpWebRequest被取消了

时间:2013-01-24 10:24:47

标签: c# asp.net xmlhttprequest

我正在使用ASP.NET来读取Request.InputStream并将HttpRequest发送给发送给我的页面抛出一​​个QueryString参数,我正确读取了Request.InputStream并正确地进行了HttpRequest,但是在我的时候Request.InputStream我发现像这样的特殊字符“Porsvägen”我得到这个错误: ystem.Net.WebException:请求已中止:请求已取消。 ---> System.IO.IOException:在写入所有字节之前无法关闭流。    在System.Net.ConnectStream.CloseInternal(Boolean internalCall,Boolean aborting)

获取Request.InputStream的代码是:

string requestData = (new StreamReader(Request.InputStream)).ReadToEnd();

我制作HttpRequest并发送它的代码是:

    webRequest = (HttpWebRequest)WebRequest.Create(new Uri(urlDestination));
    webRequest.Method = "POST";

    webRequest.ContentType = "application/x-www-form-urlencoded";
    webRequest.ContentLength = requestData.Length;

    writer = new StreamWriter(webRequest.GetRequestStream());
    writer.Write(requestData, 0, requestData.Length);//<-------Here I get the ERROR
    if (writer != null)
    {
        writer.Close();
    }

请告诉我我的代码有什么问题,因为它有效,但对于特殊字符,它会崩溃。

1 个答案:

答案 0 :(得分:6)

我设法通过实施这个来克服错误:

        string requestData = (new StreamReader(Request.InputStream)).ReadToEnd();
        byte[] bytes = Request.ContentEncoding.GetBytes(requestData);

        Stream writer = webRequest.GetRequestStream();
        writer.Write(bytes, 0, bytes.Length);

我使用Stream编写HttpWebRequest而不是StreamWriter,并使用InputStream

以字节读取ContentEncoding