2

ASP.NET を使用して Request.InputStream を読み取り、送信されたページに HttpRequest を送信して QueryString パラメータをスローします。Request.InputStream を正しく読み取り、HttpRequest を正しく作成しますが、Request.InputStream でこの「Porsvägen」のような特殊文字を見つけて、次のエラーが表示されます: ystem.Net.WebException: 要求が中止されました: 要求が取り消されました。---> System.IO.IOException: すべてのバイトが書き込まれるまでストリームを閉じることができません。System.Net.ConnectStream.CloseInternal (ブール値の internalCall、ブール値の中止) で

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();
    }

私のコードの何が問題なのか教えてください。それは機能しますが、特殊文字の場合はクラッシュします。

4

1 に答える 1

7

私はこれを実装することでエラーを克服することができました:

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

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

HttpWebRequest代わりにStreamを使用して書き込み、を使用してバイト単位StreamWriterで読み取りましたInputStreamContentEncoding

于 2013-01-24T12:24:26.753 に答える