2012-01-16 9 views
0

購入後にPayPal IPNを処理するために、以下のC#ASP.Netコードがあります。私はPayPal設定のエンコーディングをUTF8に設定しました。 ASCIIエンコーディング(コード内のUTF8がすべてASCIIに置き換えられた)でPayPalにリクエストを送り返すと、すべてが機能します。 UTF8エンコーディングでリクエストを送信すると、「リクエストが中止されました:リクエストはキャンセルされました」というメッセージが表示されます。最後の行のstreamOut.Close()で例外が発生します。私はIIS 7と.Net 2を有効にしたGodaddy Shared Hostingを使用しています。助言がありますか?"リクエストが中止されました:リクエストがキャンセルされました。 PayPal IPN処理中

protected void Page_Load(object sender, EventArgs e) 
    { 

     string strRequest = string.Empty; 
     try 
     { 
      string strLive = "https://www.paypal.com/cgi-bin/webscr"; 
      HttpWebRequest req = (HttpWebRequest)WebRequest.Create(strLive); 
      req.KeepAlive = false; 
      req.ReadWriteTimeout = 600000; 
      req.Timeout = 600000; 

      //Set values for the request back 
      req.Method = "POST"; 
      req.ContentType = "application/x-www-form-urlencoded"; 
      byte[] param = Request.BinaryRead(HttpContext.Current.Request.ContentLength); 
      strRequest = Encoding.UTF8.GetString(param); 
      strRequest += "&cmd=_notify-validate"; 
      req.ContentLength = System.Text.Encoding.UTF8.GetByteCount(strRequest); 

      //Send the request to PayPal and get the response 
      Stream RequestStream = req.GetRequestStream(); 
      StreamWriter streamOut = new StreamWriter(RequestStream, System.Text.Encoding.UTF8); 
      RequestStream.ReadTimeout = 600000; 
      RequestStream.WriteTimeout = 600000; 
      streamOut.Write(strRequest); 
      streamOut.Close(); // EXCEPTION: "The request was aborted: The request was canceled." 

答えて

0

文字列がURLエンコードされているように、それは、あなたがとにかくEncoding.ASCIIを使用する必要があることが判明しました。

関連する問題