两个二进制相同的文件,但表现出不同的行为

时间:2016-07-27 10:49:38

标签: c# asp.net excel

我发布标签为asp.net和excel,因为这是我问题的根源,但我不确定这是不是正确的地方 - 最终,我的问题是我有两个文件(由ASP.Net应用程序提供),它基于使用

的二进制文件进行比较
fc /B A.xls B.xls

然而,它们表现出不同的行为:第一个在Excel中打开;第二个没有。然后,我得出结论,除了FC实用程序检查之外,文件还有一些不同之处。

我已经尝试将这两个文件发送给朋友请求他的帮助,但发现当我这样做时,问题文件会被修复"。事实上,如果我对这个文件做任何事情,它就会得到修复"。修复后,我的意思是它然后在Excel中打开。例如,如果我拉链,然后从拉链中提取它,它很好。如果我在Notepad ++和" Save As"中打开,那就没问题了。与Wordpad相同。使用普通的旧记事本不会修复它。

所以,显然,我遗漏的这两个文件存在一些差异。

我不确定我是否有运气要求人们访问随机网站,但如果你想看一个行为的例子,我创建了一个最小页面来复制问题{{3 }}

点击" MinimalHtml.aspx"的链接,该应用将使用页面加载中的以下内容提供基于HTML的xls文件:

protected void Page_Load(object sender, EventArgs e)
{
    Response.ContentType = "application/vnd.ms-excel";
    Response.AddHeader("Content-Disposition", "filename=MinimalHtml.xls");
}

根据您的浏览器和浏览器设置(我的测试已在Chrome中),您可能会使用空白页面打开Excel。无论如何,你应该下载MinimalHtml.xls文件。这是一个纯文本文件。您应该会发现此文件不会在Excel中打开。但是,如果您压缩文件,然后从zip中提取它,它将打开。

我很好奇在进行FC比较时我缺少的其他文件差异,但最终,我需要更正ASP.Net应用程序才能正确提供HTML版本的Excel文件。有趣的是,如果我创建电子表格的XML版本,它可以下载/打开。这就是" MinimalXml.aspx"链接呢。

任何人都可以帮忙1)如何找出两个文件的不同之处;或者2)ASP.Net应用程序必须更改哪些内容才能正确地提供文件?

1 个答案:

答案 0 :(得分:2)

我认为您的问题可能是Microsoft安全补丁。看到这篇文章: Infoworld article

当您直接打开文件时,修补程序会导致问题导致空白页面,因为文件内容是HTML而不是Excel。当您在Zip文件中下载文件并解压缩时,它被视为安全并正确打开。

相关问题