asp.net – 从网站下载后文件上的数字签名

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

然后我在我的网站上发布了安装程序文件,以便分发给我的客户.该文件由asp:按钮提供,该按钮在单击时执行以下代码:

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客户端将文件直接从我的Web服务器复制到我的计算机,并且下载的文件是HAD THE SIGNATURE(即没有显示发布者:未知),所以显然Web服务器上的文件很好.它必须是通过网站下载文件的过程,剥离或使数字签名无效.我尝试了Firefox和IE,并得到了相同的结果.

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

最佳答案 可能是某些HTML被写入响应流,破坏了下载.试试这个:

在调用TransmitFile之前,请添加

Response.Clear();

调用TransmitFile后,添加

Response.SuppressContent = "true";
点赞