2017-12-06 1 views
0

난 압축 파코 라이브러리를 사용하고 :gzip 압축을 사용하여 각도 4 앱에서 JSON 데이터를 압축하고 Http 게시물을 사용하여 서버로 보내는 방법은 무엇입니까?

var binaryString = pako.gzip(data); 

서버 측 (.NET 코어) 나 압축 문자열 decomopress 미들웨어를 이용하여 오전.

try 
{ 
    context.Request.Body = new GZipStream(context.Request.Body, CompressionMode.Decompress); 
} 

하지만 로 오류가 발생하고 아카이브 항목이 당신이 Asp.NET WEBAPI 2를 사용하는 경우 지원되지 않는 압축 방법

+0

안녕하세요. Asp.NET WEBPI 2를 사용하고 계십니까? –

+0

@federicoscamuzzi 그렇습니다, 왜 내가 핸들러 대신 미들웨어를 사용하고 있는지. –

+0

@federicoscamuzzi 죄송합니다 .net core 2.0 –

답변

1

을 사용하여 압축되었다 ... 그들은 기본적으로 활성화 gzip을하지했습니다

: ... 난 항상 WebApiConfig config file에 .. 프로젝트에서 다음이

https://github.com/azzlack/Microsoft.AspNet.WebApi.MessageHandlers.Compression 

같은 패키지를 사용을 활성화하기

.NET 코어 (2.0)를 사용하는 경우 더 간단합니다! 이 프레임 워크에 포함 ..cause .. 당신이 좋아하는 Configure method에 있습니다 .. StartUp.cs file에서 활성화 단지가 있습니다

public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory) 
     { 
      //LOGGER 
      loggerFactory.AddConsole(Configuration.GetSection("Logging")); //log levels set in your configuration 
      loggerFactory.AddDebug(); //does all log levels 

      //EXCEPTIONS 
      if (env.IsDevelopment()) 
      { 
       app.UseDeveloperExceptionPage(); 
      } 
      else 
      { 
       app.UseExceptionHandler(errorApp => 
       { 
        errorApp.Run(async context => 
        { 
         context.Response.StatusCode = 500; 
         context.Response.ContentType = "text/plain"; 
         var errorFeature = context.Features.Get<IExceptionHandlerFeature>(); 
         if (errorFeature != null) 
         { 
          var logger = loggerFactory.CreateLogger("Global exception logger"); 
          logger.LogError(500, errorFeature.Error, errorFeature.Error.Message); 
         } 

         await context.Response.WriteAsync("There was an error"); 
        }); 
       }); 
      } 



      //APP CONFIGURATIONS 
      app.UseStaticFiles(); 
      app.UseCors("AllowAllOrigins"); 
      app.UseMvc(); 
      app.UseSwagger(); 
      app.UseResponseCompression(); // <<-- THIS ENABLE COMPRSSISON FOR YOUR FILES AND RESPONSE !!!!!!!! 

      //SWAGGER CONF 
      app.UseSwaggerUI(c => 
      { 
       c.SwaggerEndpoint("/swagger/v1/swagger.json", "My API V1"); 
      }); 


     } 

는 당신 도움이되기를 바랍니다!

+0

이것은 좋은 기능입니다. 하지만 나는 클라이언트 측에서 압축 한 서버 측 문자열을 압축 해제하려고합니다. 위의 코드가이를 지원합니까? –

+0

네, 그렇게 생각합니다 ... –

관련 문제