3

我在最近迁移到运行 IIS7 而不是 IIS6 的新服务器上的 ASP.NET 应用程序上有一个问题。该应用程序已升级到 .NET4,但大部分代码仍与最初用 .NET 1.1 编写的一样。该应用程序管理公司的静态表,用户可以从网页下载任何 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

作为一种解决方法,我建议关闭动态压缩。但我想了解导致这种行为的原因。我在网上搜索了相同问题的解决方案,但我只发现了这个问题,这可能不相关,因为输入数据是纯未压缩的 CSV 或 XML:

4

0 回答 0