2012-02-17 44 views
2

我已经创建了一个ASP.net应用程序与几个aspx。其中一些像API链接一样使用。这些API页面被J2ME应用程序使用,它传递一些头文件。我正在特别检查这些标题“Accept-Encoding”,以便我的页面可以发送压缩内容。如何发送在asp.net中的压缩数据

以下代码显示了其中一个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应用程序不接收数据的压缩,但确实得到头“内容编码”。

任何人都可以帮我解决这个问题吗?

+0

也许如果你在这次调用的开始时移动过滤器,我的意思是在页面init。 – Aristos 2012-02-17 12:21:46

+0

@Aristos:好的,会检查。 – IrfanRaza 2012-02-17 12:24:36

回答

2

您不需要在代码中执行GZIP编码。

这完全通过在IIS 6IIS 7中正确配置您的站点来处理。