在开始下载到客户端的Web浏览器之前对.NET程序集进行代码签名
我正在使用signtool.exe对来自C#的自动生成的可下载内容进行数字签名,然后调用命令行,然后将该文件传输到客户端浏览器。问题是,虽然网上的签名似乎没问题,但下载的文件似乎缺少一部分内容。如果右键单击服务器上生成的文件,则会看到完美的签名,如果您查看证书,则表示“此数字签名确实无误”。在开始下载到客户端的Web浏览器之前对.NET程序集进行代码签名
下载的文件看起来不一样。虽然它的体积较小15个字节,但没有损坏,但是问题名称完好无损,它表示此数字签名无效。
在运输过程中发生了什么?我使用此代码签名内容:提前
Response.Clear();
Response.ContentType = "application/exe";
Response.AddHeader("content-disposition", "filename=" + filename);
Response.AddHeader("Content-Length", fi.Length.ToString());
Response.TransmitFile(filePath);
谢谢
弗兰克。
在标题中发送给客户端的响应是正确的长度还是错误的(短的)响应?使用Fiddler或Firebug进行检查。
如果它是正确的,但客户端没有收到数据,请在TransmitFile后尝试一个Reponse.Flush()。我认为这可能只是迷信,但很多人似乎都这么做。
尝试刷新您的FileInfo fi
,然后再读取Content-Length
标题的长度,它可能会在签署之前缓存旧的长度。
fi在签名应用程序后被实例化。此外,下载的证书中还有一个发行者姓名。 – Michali 2010-11-11 15:37:24
您是否在使用证书签署不属于受信任机构的程序集?这将是我的第一次猜测之一。 – 2010-11-11 15:37:04
+1我需要这些信息。你还可以通过编程获得一些信息吗? – 2011-09-16 11:50:12