«Запрос был прерван: запрос был отменен».при обработке PayPal IPN - PullRequest
0 голосов
/ 16 января 2012

У меня есть следующий C # ASP.Net код для обработки IPN PayPal после покупки.Я установил кодировку в настройках PayPal на UTF8.Когда я отправляю запрос обратно в PayPal с кодировкой ASCII (все UTF8 в коде заменены на ASCII), все работает.Когда я отправляю запрос с кодировкой UTF8, я получаю сообщение «Запрос был прерван: запрос был отменен».исключение в streamOut.Close () в последней строке.Я использую Godaddy Shared Hosting с включенными IIS 7 и .Net 2.Есть предложения?

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."

1 Ответ

0 голосов
/ 22 января 2012

Оказывается, что вы все равно должны использовать Encoding.ASCII, так как строка имеет URL-кодировку.

...