Как отправить сжатые данные в asp.net - PullRequest
2 голосов
/ 17 февраля 2012

Я создал приложение ASP.net с несколькими aspx. Некоторые из них используются как ссылки API. Эти страницы API используются приложением J2ME, которое передает некоторые заголовки. Я проверяю эти заголовки, в частности «Accept-Encoding», чтобы моя страница могла отправлять сжатое содержимое.

Следующий код показывает пример кода с одной из этих страниц API.

byte[] buffer;
    int bufferLength;

    protected void Page_Load(object sender, EventArgs e)
    {
        bufferLength = Request.ContentLength;
        buffer = new byte[bufferLength];
        buffer = Request.BinaryRead(bufferLength);
        string s = Encoding.ASCII.GetString(buffer);

        bool needEncrypted = (Request.Headers["Accept-Encoding"] != null);

        if (!string.IsNullOrEmpty(s))
        {
            JavaScriptSerializer ser = new JavaScriptSerializer();
            CRequestQuestParameter QuestPara = ser.Deserialize<CRequestQuestParameter>(s);
            CUtil utilFun = new CUtil(WebConfigurationManager.ConnectionStrings["TheConnectionString"].ToString());

            CResponseQuestionSets res = new CResponseQuestionSets();


            //No error setting
            res.ErrorCode = -1;
            res.ErrorMessage = "";
            res.IsError = false;

            //Return data
            res.ResponseData = utilFun.GetQuestionSet(QuestPara);
            if (res.ResponseData != null) {
                res.ErrorCode = -1;
                res.ErrorMessage = "";
                res.IsError = false;

            }
            else
            {
                res.ErrorCode = 102;
                res.ErrorMessage = "User does not exists";
                res.IsError = true;

            }



            if (needEncrypted)
            {
                HttpContext context = HttpContext.Current;
                context.Response.Filter = new GZipStream(context.Response.Filter, CompressionMode.Compress);
                HttpContext.Current.Response.AppendHeader("Content-encoding", "gzip");
            }

            Response.ContentType = "application/json charset=utf-8";
            Response.Write(ser.Serialize(res));
            Response.End();

        }
    }

Проблема здесь в том, что приложение J2ME не получает данные как сжатые, но получает заголовок «Content-Encoding».

Кто-нибудь может мне помочь решить эту проблему?

1 Ответ

3 голосов
/ 17 февраля 2012

Вам не нужно делать кодировку GZIP в вашем коде.

Это полностью выполняется путем правильной настройки вашего сайта в IIS 6 и IIS 7 .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...