4

我有一个从 Web 服务器安装的 Outlook 加载项。此加载项的工作方式与我在 Office 中使用的所有其他加载项相同。

  1. setup.exe 已下载并执行
  2. 所有先决条件(.Net 框架等)都经过验证
  3. vsto 文件已下载

到目前为止,安装这个插件的每个人都没有遇到任何问题(这个插件已经使用了大约一年)。我们有一个新客户在 Windows 7 上安装它,我们看到了我们的第一个问题。这是错误:

There was an error during installation:
Downloading http://<path and filename>.vsto did not succeed

***************** Exception Text******************
System.Deployment.Application.DeploymentDownloadException: Downloading http://<path and filename>.vsto did not succeed
System.Net.WebException: The remote server returned an error: (407) Proxy Authentication Required. ---> System.ComponentModel.Win32Exception: The token supplied to the function is invalid
at System.Net.NTAuthentication.GetOutgoingBlob(Byte[] incomingBlob, Boolean throwOnError, SecurityStatus& statusCode)
at System.Net.NTAuthentication.GetOutgoingBlob(String incomingBlob)
at System.Net.NtlmClient.DoAuthenticate(String challenge, WebRequest webRequest, ICredentials credentials, Boolean preAuthenticate)
at System.Net.NtlmClient.Authenticate(String challenge, WebRequest webrequest, ICredentials credentials)
at System.Net.AuthenticationManager.Authenticate(String challenge, WebRequest request, ICredentials credentials)
at System.Net.AuthenticationState.AttemptAuthenticate(HttpWebRequest httpWebRequest, ICredentials authInfo)
at System.Net.HttpWebRequest.CheckResubmitForAuth()
at System.Net.HttpWebRequest.CheckSubmit(Exception& e)
--- End of inner exception stack trace ---
at Microsoft.VisualStudio.Tools.Applications.Deployment.ClickOnceAddInDeploymentManager.InstallAddIn()

显然,我不能从我的位置复制。我的直觉告诉我这个客户的网络安全引起了问题(我的理解是他们有一系列防火墙等),但他们的 Windows XP 机器安装没有问题。

有人看到我缺少的东西吗?

4

3 回答 3

6

最后,答案并不难。发生的事情是,显然,用户位于阻止下载 VSTO 文件的代理服务器后面,因为它没有代理凭据。

因此,我不得不为这些用户破例,将所有文件以 zip 格式发送给他们,他们可以从中进行安装。

请注意,遇到此问题的用户必须在继续之前运行命令以清除 ClickOnce 应用程序缓存;看起来仅仅尝试安装它就会留下一些导致问题的残留物。如果您还不知道,您可以通过从命令提示符运行此命令(或创建包含以下内容的 .bat 文件)来清除应用缓存:

    rundll32 dfshim CleanOnlineAppCache
于 2012-09-05T19:13:32.620 回答
1

有一个MS KB ( KB917952 ) 可以更正使用代理身份验证时的 ClickOnce 部署问题

于 2012-08-31T14:01:11.940 回答
0

最终用户或 IT 可以修改 machine.config 以使用其 NTLM 登录启用代理身份验证。这将允许他们在需要身份验证的代理后面安装 ClickOnce 或 VSTO 应用程序。

如何:更改您的默认代理以始终使用您的默认凭据(NTLM 登录)。

  1. 编辑 %windir%\Microsoft.NET\Framework\v4.0.30319\config\machine.config

  2. 添加如下所示的 defaultProxy 元素。当一个已经存在时,记得添加到现有的 system.net 部分。

<configuration>
..

  <system.net>
    <defaultProxy enabled="true" useDefaultCredentials="true"/>
  </system.net>

...
</configuration>

元素(网络设置)

useDefaultCredentials 指定此主机的默认凭据是否用于访问 Web 代理。默认值为false

于 2015-12-08T23:40:27.650 回答