We have an full trust XBAP that is code signed. It works fine with a normal SSL web site with SSL. But when it runs behind a reverse proxy, it fails to download.
It just says: (400) Bad Request. Do you guys have any idea?
Thanks.
The entire error details below:
PLATFORM VERSION INFO Windows : 6.1.7601.65536 (Win32NT) Common Language Runtime : 4.0.30319.18444 System.Deployment.dll : 4.0.30319.34244 built by: FX452RTMGDR clr.dll : 4.0.30319.18444 built by: FX451RTMGDR dfdll.dll : 4.0.30319.34244 built by: FX452RTMGDR dfshim.dll : 4.0.41209.0 (Main.041209-0000)
SOURCES Deployment url : (the SSL web site)/VrWeb/XBAP/Netsmart.VR.XBAP.xbap?.ADAuthCookie=A19128BE536C0F169406543CF67A57010F530A91107DCA648BF21D33107B728082815EBD74F65890A386DBF9CE68959DE5FAF7D765DAB75D404F9F0CCCE6FA791E1595FF5942C37FE46B4098E0D4126491A5C3701AF132E2AAA1DDC9D5DFFBD893A43C6149D7F9E62120BD0125FC6C97B1ED3E16E39BE7E49B40BCD66C18945F
IDENTITIES Deployment Identity : Netsmart.VR.XBAP.xbap, Version=2.0.1.1213, Culture=neutral, PublicKeyToken=0d8e13e75f96a245, processorArchitecture=msil
APPLICATION SUMMARY * Online only application. * Trust url parameter is set. ERROR SUMMARY Below is a summary of the errors, details of these errors are listed later in the log. * An exception occurred while downloading the manifest. Following failure messages were detected: + 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. + The remote server returned an error: (400) Bad Request.
COMPONENT STORE TRANSACTION FAILURE SUMMARY No transaction error was detected.
WARNINGS There were no warnings during this operation.
OPERATION PROGRESS STATUS No phase information is available.
ERROR DETAILS Following errors were detected during this operation. * [05/21/2015 10:17:07 AM] System.Deployment.Application.DeploymentDownloadException (Unknown subtype) - 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. - Source: System.Deployment - Stack trace: at System.Deployment.Application.SystemNetDownloader.DownloadSingleFile(DownloadQueueItem next) at System.Deployment.Application.SystemNetDownloader.DownloadAllFiles() at System.Deployment.Application.FileDownloader.Download(SubscriptionState subState) at System.Deployment.Application.DownloadManager.DownloadManifestAsRawFile(Uri& sourceUri, String targetPath, IDownloadNotification notification, DownloadOptions options, ServerInformation& serverInformation) at System.Deployment.Application.DownloadManager.DownloadApplicationManifest(AssemblyManifest deploymentManifest, String targetDir, Uri deploymentUri, IDownloadNotification notification, DownloadOptions options, Uri& appSourceUri, String& appManifestPath) at System.Deployment.Application.DeploymentManager.BindCore(Boolean blocking, TempFile& tempDeploy, TempDirectory& tempAppDir, FileStream& refTransaction, String& productName) at System.Deployment.Application.DeploymentManager.BindAsyncWorker() --- Inner Exception --- System.Net.WebException - The remote server returned an error: (400) Bad Request. - Source: System - Stack trace: at System.Net.HttpWebRequest.GetResponse() at System.Deployment.Application.SystemNetDownloader.DownloadSingleFile(DownloadQueueItem next)
COMPONENT STORE TRANSACTION DETAILS No transaction information is available.
It turned out that the issue was that we need to encode our query string into the manifest to pass authentication information to the XBAP as described here. The problem is that the reverse proxy server treat the entire query string as a resource string and because it encodes the query string in between as it is done in the cookieless Asp.Net, the reverse proxy returns as the resource does not exist. So, the only way to resolve this is to disable reverse proxy. That's what the customer did in case someone has the same problem.