4

我开发了一个软件应用程序,并使用从 Verisign(现为 Symantec)获得的 Authenticode 证书对我的安装程序进行了数字签名。我使用 Visual Studio 附带的 signtool.exe 实用程序对安装程序 (.exe) 进行了签名。当我运行安装程序时,它现在将我的公司名称显示为发布者,而不是“未知”,这是我的目标....成功!

然后我在我的网站上发布了安装程序文件以分发给我的客户。该文件由一个 asp:button 提供服务,单击该按钮将执行以下代码:

Response.ContentType = "application/octet-stream";

Response.AppendHeader("Content-Disposition", "attachment; filename=CP11Full_x86.exe");

Response.TransmitFile(Server.MapPath("~/Software/ContainmentPlanner/Files/CP11Full_x86.exe"));

HttpContext.Current.ApplicationInstance.CompleteRequest(); 

当我从我的网站下载安装程序文件并运行它时,发布者字段显示“未知”!!!然后我使用 FTP 客户端将文件直接从我的网络服务器复制到我的计算机,下载的文件有签名(即没有显示发布者:未知),所以显然网络服务器上的文件很好。它一定是关于通过网站下载文件的过程,该过程会去除或使数字签名无效。我尝试了 Firefox 和 IE 并得到了相同的结果。

我究竟做错了什么?提前感谢你的帮助。

4

1 回答 1

2

可能是某些 HTML 被写入响应流,从而破坏了下载。试试这个:在调用 TransmitFile 之前,添加

Response.Clear();

在调用 TransmitFile 之后,添加

Response.SuppressContent = "true";
于 2013-02-26T19:16:06.860 回答