反向代理上的 XBAP

XBAP on Reverse Proxy

我们有一个代码签名的完全信任的 XBAP。它适用于带有 SSL 的普通 SSL 网站。但是当它在反向代理后面运行时,它无法下载。

它只是说:(400) 错误的请求。你们有什么想法吗?

谢谢。

下面是整个错误的详细信息:

平台版本信息 Windows:6.1.7601.65536 (Win32NT) 公共语言运行时:4.0.30319.18444 System.Deployment.dll:4.0.30319.34244 构建者:FX452RTMGDR clr.dll:4.0.30319.18444 构建者:FX451RTMGDR dfdll.dll:4.0.30319.34244 构建者:FX452RTMGDR dfshim.dll : 4.0.41209.0 (Main.041209-0000)

来源 Deployment url : (the SSL web site)/VrWeb/XBAP/Netsmart.VR.XBAP.xbap?.ADAuthCookie=A19128BE536C0F169406543CF67A57010F530A91107DCA648BF21D33107B728082815EBD74F65890A386DBF9CE68959DE5FAF7D765DAB75D404F9F0CCCE6FA791E1595FF5942C37FE46B4098E0D4126491A5C3701AF132E2AAA1DDC9D5DFFBD893A43C6149D7F9E62120BD0125FC6C97B1ED3E16E39BE7E49B40BCD66C18945F

身份 部署身份:Netsmart。VR.XBAP.xbap,版本=2.0.1.1213,文化=中性,PublicKeyToken=0d8e13e75f96a245,processorArchitecture=msil

申请摘要 * 仅限在线申请。 * Trust url 参数已设置。 错误摘要 下面是错误的摘要,这些错误的详细信息稍后在日志中列出。 * 下载清单时发生异常。检测到以下失败消息: + Downloading (the SSL web site)/VrWeb/XBAP/(X(1)F(A19128BE536C0F169406543CF67A57010F530A91107DCA648BF21D33107B728082815EBD74F65890A386DBF9CE68959DE5FAF7D765DAB75D404F9F0CCCE6FA791E1595FF5942C37FE46B4098E0D4126491A5C3701AF132E2AAA1DDC9D5DFFBD893A43C6149D7F9E62120BD0125FC6C97B1ED3E16E39BE7E49B40BCD66C18945F))/AppFiles/Netsmart.VR.XBAP_2_0_1_1213/Netsmart.VR.XBAP.exe.manifest did not succeed. + 远程服务器返回错误:(400) Bad Request.

组件存储事务失败摘要 未检测到交易错误。

警告 在此操作期间没有警告。

操作进度状态 没有可用的相位信息。

错误详情 在此操作期间检测到以下错误。 * [05/21/2015 10:17:07 AM] System.Deployment.Application.DeploymentDownloadException(未知子类型) - Downloading (the SSL web site)/VrWeb/XBAP/(X(1)F(A19128BE536C0F169406543CF67A57010F530A91107DCA648BF21D33107B728082815EBD74F65890A386DBF9CE68959DE5FAF7D765DAB75D404F9F0CCCE6FA791E1595FF5942C37FE46B4098E0D4126491A5C3701AF132E2AAA1DDC9D5DFFBD893A43C6149D7F9E62120BD0125FC6C97B1ED3E16E39BE7E49B40BCD66C18945F))/AppFiles/Netsmart.VR.XBAP_2_0_1_1213/Netsmart.VR.XBAP.exe.manifest did not succeed. - 来源:System.Deployment - 堆栈跟踪: 在 System.Deployment.Application.SystemNetDownloader.DownloadSingleFile(下一个 DownloadQueueItem) 在 System.Deployment.Application.SystemNetDownloader.DownloadAllFiles() 在 System.Deployment.Application.FileDownloader.Download(订阅状态子状态) 在 System.Deployment.Application.DownloadManager.DownloadManifestAsRawFile(Uri& sourceUri、字符串 targetPath、IDownloadNotification 通知、DownloadOptions 选项、ServerInformation& serverInformation) 在 System.Deployment.Application.DownloadManager.DownloadApplicationManifest(AssemblyManifest deploymentManifest、String targetDir、Uri deploymentUri、IDownloadNotification 通知、DownloadOptions 选项、Uri& appSourceUri、String& appManifestPath) 在 System.Deployment.Application.DeploymentManager.BindCore(布尔阻塞、TempFile& tempDeploy、TempDirectory& tempAppDir、FileStream& refTransaction、String& productName) 在 System.Deployment.Application.DeploymentManager.BindAsyncWorker() --- 内部异常 --- System.Net.WebException - 远程服务器返回错误:(400) 错误请求。 - 来源:系统 - 堆栈跟踪: 在 System.Net.HttpWebRequest.GetResponse() 在 System.Deployment.Application.SystemNetDownloader.DownloadSingleFile(下一个 DownloadQueueItem)

组件商店交易详情 没有可用的交易信息。

事实证明,问题在于我们需要将查询字符串编码到清单中,以将身份验证信息传递给 XBAP,如 here 所述。问题在于反向代理服务器将整个查询字符串视为资源字符串,并且因为它像在 cookieless Asp.Net 中所做的那样对中间的查询字符串进行编码,反向代理 returns 作为资源不存在。因此,解决此问题的唯一方法是禁用反向代理。如果有人遇到同样的问题,客户就是这样做的。