3

IIS6 ではなく IIS7 を実行している新しいサーバーに最近移行された ASP.NET アプリケーションに問題があります。アプリケーションは .NET4 にアップグレードされていますが、ほとんどのコードは元の .NET 1.1 で書かれたままです。アプリケーションは会社の静的テーブルを管理し、ユーザーは静的テーブル データを Web ページから CSV または XML でダウンロードできます。

問題 - IIS7 機能の [動的コンテンツ圧縮を有効にする] がオンになっている場合、ファイルが破損します (ファイルの末尾がトリミングされます)。破損はランダムではないようです。つまり、入力データが等しい限り、常に同じ結果が得られます。入力データ セットが異なると、効果のサイズ (トリミングされる文字数) も異なります。動的圧縮をオフにすると、問題は完全になくなります。

ダウンロードの例 (私は常に CSV ファイル全体の最後の行のみを投稿しています):

  1. 静的テーブル A

    • 動的圧縮オフ (完全なファイル長 720 バイト):

      2010-10-21 00:00:00;;"P ";"registrované partnerství";"REGISTERED PARNTERSHIP";"registrované partnerstvo";0
      
    • 動的圧縮オフ (最後の 1 バイトがトリミングされます。つまり、最後の改行は「LF」文字が失われます)、ファイル長 = 719 バイト):
  2. 静的テーブル B

    • 動的圧縮オフ (破損なし、​​ファイル長 = 593349 バイト):

      2012-04-16 00:00:00;;"800650";"Finanční centrum Třebíč";"PSB FC Třebíč";"PSB FC Třebíč";"PSB FC Třebíč";9;2;61;"67401";"Třebíč";"Karlovo náměstí 32/26";5057;2518;852;;;2012-05-02 00:00:00;0
      
    • 動的圧縮オン (最後の 2 バイトがトリミングされる (つまり、最後の CRLF が失われる)、ファイル長 = 593347 バイト):
  3. 静的テーブル C

    • 動的圧縮オフ (破損なし、​​ファイル長 = 282 バイト):

      2012-04-16 00:00:00;;"3";"Zaslat do vlastních rukou";0
      
    • 動的圧縮オン (最後の 5 文字をトリミング、ファイル長 = 275 バイト):

      2012-04-16 00:00:00;;"3";"Zaslat do vlastních ruk
      
  4. 静的テーブル D

    • 動的圧縮オフ (破損なし、​​ファイル長 = 6506 バイト):

      2010-02-20 00:00:00;2010-03-20 00:00:00;390;"879001";2;0
      
    • 動的圧縮オン (最後の 13 文字をトリミング、ファイル長 = 6491 バイト):

      2010-02-20 00:00:00;2010-03-20 00:00:00;390
      

XML 出力形式でも同じことが起こりますが、その場合の効果は常に同じです。XML は常に 1 文字だけトリミングされます。結果は、ルート要素の終了タグが閉じられていないことです:

</Export>

</Export

回避策として、動的圧縮をオフにすることをお勧めしました。しかし、この動作の原因を理解したいと思います。Web で同じ問題の解決策を検索しましたが、入力データが圧縮されていない純粋な CSV または XML であるため、おそらく関係のないこの問題しか見つかりませんでした。

4

0 に答える 0