我在ASP.NET应用程序上遇到了一个问题,该问题最近已迁移到运行IIS7而不是IIS6的新服务器。该应用程序已升级到.NET4,但大多数代码仍然保留,因为它最初是用.NET 1.1编写的。该应用程序管理公司的静态表,用户可以从网页下载CSV或XML中的任何静态表数据。
问题 - 如果启用了IIS7功能“启用动态内容压缩”,则文件已损坏(文件末尾将被修剪)。腐败似乎不是随机的,即只要输入数据相等,我就会得到相同的结果。对于不同的输入数据集,效果的大小(修剪的字符数)也不同。当我关闭动态压缩时,问题就完全消失了。
下载示例(我总是只发布整个CSV文件的最后一行):
静态表A
动态压缩关闭(完整文件长度为720字节):
2010-10-21 00:00:00;;"P ";"registrované partnerství";"REGISTERED PARNTERSHIP";"registrované partnerstvo";0
静态表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
静态表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
静态表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
作为一种解决方法,我建议关闭动态压缩。但我想了解导致这种行为的原因。我在网上搜索了相同问题的解决方案,但我发现只有this issue,这可能不相关,因为输入数据是纯粹的未压缩CSV或XML: