Ashx ошибка обработчика http 2 - PullRequest
2 голосов
/ 24 сентября 2011

Я получаю сообщение об ошибке "byte [] param = [...]" из следующего обработчика http.Другие файлы Ashx работают.Скажите, если вам нужна дополнительная информация ...


Запрос недоступен в этом контексте

Описание: во время выполнения текущего веб-запроса произошло необработанное исключение.Пожалуйста, просмотрите трассировку стека для получения дополнительной информации об ошибке и о том, где она возникла в коде.

Сведения об исключении: System.Web.HttpException: запрос недоступен в этом контексте


public class Handler1 : IHttpHandler
{

    public void ProcessRequest(HttpContext context)
    {
        context.Response.ContentType = "text/plain";
        context.Response.Write("Hello World");
        //Post back to either sandbox or live
        string strSandbox = "https://www.sandbox.paypal.com/cgi-bin/webscr";
        string strLive = "https://www.paypal.com/cgi-bin/webscr";
        HttpWebRequest req = (HttpWebRequest)WebRequest.Create(strSandbox);

        //Set values for the request back
        req.Method = "POST";
        req.ContentType = "application/x-www-form-urlencoded";
        System.Web.UI.Page pa = new System.Web.UI.Page();

        //HERE>HERE>HERE>HERE>
        byte[] param = pa.Request.BinaryRead(HttpContext.Current.Request.ContentLength);
        string strRequest = Encoding.ASCII.GetString(param);
        strRequest += "&cmd=_notify-validate";
        req.ContentLength = strRequest.Length;

1 Ответ

3 голосов
/ 24 сентября 2011

Почему вызывается объект Request System.Web.UI.Page? У него не будет его, так как он не был связан с запросом.

Ваш код:

System.Web.UI.Page pa = new System.Web.UI.Page();

//HERE>HERE>HERE>HERE>
byte[] param = pa.Request.BinaryRead(HttpContext.Current.Request.ContentLength);
string strRequest = Encoding.ASCII.GetString(param);

Разве это не должно читаться

string strRequest;
StreamReader reader = new StreamReader(context.Request.InputStream);
strRequest = reader.ReadToEnd();

Если все, что вам нужно, это получить необработанную строку входящего запроса.

...