2017-12-06 13 views
0

私は圧縮のためにPAKOライブラリを使用しています:サーバー側(ネットコア)でgzip圧縮を使用してAngle 4 AppでJSONデータを圧縮し、Http投稿を使用してサーバーに送信する方法はありますか?

var binaryString = pako.gzip(data); 

私はzip形式の文字列を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 CORE(2.0)を使用している場合は、もっと簡単です! Configure methodで...それは、フレームワークに含まれている..cause ..あなただけの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

はい私はそう思います... –

関連する問題