我有一个从Web服务器安装的Outlook加载项。此加载项的工作方式与我在Office中使用的所有其他加载项的工作方式相同。
到目前为止,安装此加载项的每个人都没有遇到任何问题(此加载项已使用了大约一年)。我们有一个新客户在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机器安装没有问题。
有人看到我遗失的任何东西吗?
答案 0 :(得分:5)
最后,答案并不太难。发生的事情显然是,用户是阻止下载VSTO文件的代理服务器,因为它没有代理凭据。
所以,我必须为这些用户制作一个例外,将所有文件发送到他们可以安装的zip文件中。
请注意,遇到此问题的用户必须先运行命令清除ClickOnce应用缓存,然后再继续;看起来仅仅是尝试安装它就会留下一些残留物,这会造成问题。如果您还不知道,可以通过从命令提示符运行此命令(或创建包含的.bat文件)来清除应用程序缓存:
rundll32 dfshim CleanOnlineAppCache
答案 1 :(得分:1)
答案 2 :(得分:0)
最终用户或IT可以修改machine.config以使用NTLM登录启用代理身份验证。这将允许他们在需要身份验证的代理服务器后面安装ClickOnce或VSTO应用程序。
如何:将默认代理更改为始终使用默认凭据(NTLM登录)。
编辑%windir%\ Microsoft.NET \ Framework \ v4.0.30319 \ config \ machine.config
添加如下所示的defaultProxy元素。记住在已存在的情况下添加到现有的system.net部分。
<configuration>
..
<system.net>
<defaultProxy enabled="true" useDefaultCredentials="true"/>
</system.net>
...
</configuration>
<强> useDefaultCredentials 强> 指定是否使用此主机的默认凭据来访问Web代理。默认值为 false 。