ClickOnce InvalidDeploymentException(ManifestParse)仅针对某些用户的错误URL

问题描述:

我们的一位客户在部署我们的ClickOnce应用程序时遇到问题。请注意,他是唯一一个出现问题的人,其他人都成功部署。在日志中,我们可以看到一个“错误的”URL。详细日志文件:ClickOnce InvalidDeploymentException(ManifestParse)仅针对某些用户的错误URL

PLATFORM VERSION INFO 
    Windows    : 5.1.2600.196608 (Win32NT) 
    Common Language Runtime  : 4.0.30319.1 
    System.Deployment.dll   : 4.0.30319.1 (RTMRel.030319-0100) 
    clr.dll    : 4.0.30319.1 (RTMRel.030319-0100) 
    dfdll.dll    : 4.0.30319.1 (RTMRel.030319-0100) 
    dfshim.dll    : 4.0.31106.0 (Main.031106-0000) 

SOURCES 
    Deployment url   : http://download.sandboxmodel.com/ptb/PTB.application 

ERROR SUMMARY 
    Below is a summary of the errors, details of these errors are listed later in the log. 
    * Activation of http://download.sandboxmodel.com/ptb/PTB.application (correct URL) resulted in exception. Following failure messages were detected: 
     + Exception reading manifest from 
http://wrongurl.htm?Time=05%2FJan%2F2012%3A14%3A27%3A13%20-0600&ID=4919900&Client_IP.... the manifest may not be valid or the file could not be opened. 
     + Expected DTD markup was not found. Line 1, position 3. 

COMPONENT STORE TRANSACTION FAILURE SUMMARY 
    No transaction error was detected. 

WARNINGS 
    There were no warnings during this operation. 

OPERATION PROGRESS STATUS 
    * [1/5/2012 2:27:13 PM] : Activation of http://download.sandboxmodel.com/ptb/PTB.application (correct URL) has started. 

ERROR DETAILS 
    Following errors were detected during this operation. 
    * [1/5/2012 2:27:13 PM] System.Deployment.Application.InvalidDeploymentException (ManifestParse) 
     - Exception reading manifest from 
http://wrongurl.htm?Time=05%2FJan%2F2012%3A14%3A27%3A13%20-0600&ID=4919900&Client_IP.... the manifest may not be valid or the file could not be opened. 
     - Source: System.Deployment 
     - Stack trace: 
      at System.Deployment.Application.ManifestReader.FromDocument(String localPath, ManifestType manifestType, Uri sourceUri) 
      at System.Deployment.Application.DownloadManager.DownloadDeploymentManifestDirectBypass(SubscriptionStore subStore, Uri& sourceUri, TempFile& tempFile, SubscriptionState& subState, IDownloadNotification notification, DownloadOptions options, ServerInformation& serverInformation) 
      at System.Deployment.Application.DownloadManager.DownloadDeploymentManifestBypass(SubscriptionStore subStore, Uri& sourceUri, TempFile& tempFile, SubscriptionState& subState, IDownloadNotification notification, DownloadOptions options) 
      at System.Deployment.Application.ApplicationActivator.PerformDeploymentActivation(Uri activationUri, Boolean isShortcut, String textualSubId, String deploymentProviderUrlFromExtension, BrowserSettings browserSettings, String& errorPageUrl) 
      at System.Deployment.Application.ApplicationActivator.ActivateDeploymentWorker(Object state) 
     --- Inner Exception --- 
     System.Xml.XmlException 
     - Expected DTD markup was not found. Line 1, position 3. 
     - Source: System.Xml 
     - Stack trace: 
      at System.Xml.XmlTextReaderImpl.Throw(Exception e) 
      at System.Xml.XmlTextReaderImpl.DtdParserProxy.System.Xml.IDtdParserAdapter.Throw(Exception e) 
      at System.Xml.DtdParser.Throw(Int32 curPos, String res, String arg) 
      at System.Xml.DtdParser.ScanSubsetContent() 
      at System.Xml.DtdParser.GetToken(Boolean needWhiteSpace) 
      at System.Xml.DtdParser.ParseSubset() 
      at System.Xml.DtdParser.ParseExternalSubset() 
      at System.Xml.DtdParser.ParseInDocumentDtd(Boolean saveInternalSubset) 
      at System.Xml.DtdParser.Parse(Boolean saveInternalSubset) 
      at System.Xml.DtdParser.System.Xml.IDtdParser.ParseInternalDtd(IDtdParserAdapter adapter, Boolean saveInternalSubset) 
      at System.Xml.XmlTextReaderImpl.ParseDtd() 
      at System.Xml.XmlTextReaderImpl.ParseDoctypeDecl() 
      at System.Xml.XmlTextReaderImpl.ParseDocumentContent() 
      at System.Xml.XmlTextReaderImpl.Read() 
      at System.Xml.XmlTextReader.Read() 
      at System.Deployment.Application.ManifestValidatingReader.XmlFilteredReader.Read() 
      at System.Xml.XmlCharCheckingReader.Read() 
      at System.Xml.XsdValidatingReader.Read() 
      at System.Deployment.Application.ManifestReader.FromDocument(String localPath, ManifestType manifestType, Uri sourceUri) 

COMPONENT STORE TRANSACTION DETAILS 
    No transaction information is available. 

我们从Visual Studio 2010中使用.NET Framework 4.0客户端配置文件发布,没有任何“特殊” settings.These一些设置: 该应用程序可在网上只 启用的ClickOnce安全设置完全信任 清单和程序集已签署

我试图部署时与客户进行了验证,他使用的是Internet Explorer浏览器。 任何想法如何解决它?

+0

文件损坏有许多可能的原因。您的客户需要她的IT人员帮助,让机器重新稳定。 – 2012-01-07 16:00:04

+0

为什么你认为客户的机器不稳定,文件损坏?我正在考虑更多的网络问题。我不明白为什么ClickOnce尝试从错误的URL进行部署。 – Guy 2012-01-09 07:06:23

我们在将URL重定向到例如公共WLAN的登录页面。由于我们需要更新,只要启用WLAN适配器,用户就无法启动应用程序。

+0

在我的发布设置中,我禁用了更新,客户仍然存在此问题。您将URL重定向到公共WLAN的登录页是什么意思?这是客户网络中的一些网络设置吗?你找到了解决问题的方法吗? – Guy 2012-01-23 06:45:36

这意味着你应该在你的系统上安装最新的.NET。 尝试https://www.microsoft.com/en-us/download/details.aspx?id=48137