【发布时间】:2010-06-07 12:19:25
【问题描述】:
我正在开发一个通过 clickonce 部署项目的项目。存放这些文件的网站将只接受 HTTPS 流量,如果您尝试通过 HTTP 连接,我们的 siteminder 代理会将您重定向到 HTTPS 登录表单。出于安全原因,我们无法禁用站点管理器代理或启用 HTTP。 在应用程序文件中,我有一个引用清单的绝对路径的代码库,它是通过 HTTPS
<dependency>
<dependentAssembly dependencyType="install" codebase="https://psaportal.ilab.test.com/testprinting/Application_Files/testprint_1_0_0_1/testprint.exe.manifest" size="10147">
<assemblyIdentity name="testprint.exe" version="1.0.0.1" publicKeyToken="9a078649ee05e0e7" language="neutral" processorArchitecture="msil" type="win32" />
<hash>
<dsig:Transforms>
<dsig:Transform Algorithm="urn:schemas-microsoft-com:HashTransforms.Identity" />
</dsig:Transforms>
<dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
<dsig:DigestValue>2nch1T0SmlAycmePobtg9F1qF7c=</dsig:DigestValue>
</hash>
</dependentAssembly>
</dependency>
在运行wireshark和解码SSL流量时(我在wireshark中使用服务器的私钥来解密SSL流量)。我看到对应用程序清单文件的请求是通过 HTTPS 进行的(这是一件好事)。但是当 clickonce 尝试下载 testprint.exe.deploy 和其他相应的文件时,它总是通过 HTTP 并且站点管理员会跳转并重定向请求,这会导致 clickonce 安装出现错误。
我尝试在清单文件中指定绝对代码库引用,但是当 Clickonce 安装程序下载清单时,我开始收到入口点错误。
清单文件中的当前依赖部分如下所示:
<dependency>
<dependentAssembly dependencyType="install" allowDelayedBinding="true" codebase="testprint.exe" size="107008">
<assemblyIdentity name="testprint" version="1.0.0.1" language="neutral" processorArchitecture="msil" />
<hash>
<dsig:Transforms>
<dsig:Transform Algorithm="urn:schemas-microsoft-com:HashTransforms.Identity" />
</dsig:Transforms>
<dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
<dsig:DigestValue>dm2nJsu/5UyaEXSDmnISwfnE9MM=</dsig:DigestValue>
</hash>
</dependentAssembly>
</dependency>
我已验证应用程序、清单和部署文件所在的网站都在同一个 URL 下,并且 SSL 证书是有效的证书。
我们已经尝试了生成应用程序和清单文件的所有组合,因为我们梦想并正在寻找其他解决方案。
应用程序使用 .NET 3.5,我们尝试通过 VS2008、VS2010 和 mage 构建应用程序和清单文件,但没有成功。
有谁知道如何让所有部署文件始终通过 HTTPS 下载?
【问题讨论】: