此解决方案适用于 Visual Studio 2017,但可以适应类似的错误和应用程序。可用作 Visual Studio 代理错误的通用方法,只需更改进程和位置。更新:它也适用于 Visual Studio 2015。您只能配置一个进程。
请按照以下步骤操作:
- 使用身份验证数据创建一个 dll。
- 将dll复制到每个进程的目录
- 为每个进程配置Visual Studio ".exe.config" XML 文件以使用创建的 dll。4.(可选)使用 Fiddler 进行监控时尝试使用 Visual Studio 。
您可以使用像SharpDevelop这样的轻量级 IDE来创建 dll。在 ShareDevelop 中,单击File->New->Solution并选择C#/Windows Application/windows User Control Library类别。将应用程序命名为AuthProxy。创建一个名为AuthProxyModule.cs的类并将此代码放入其中:
using System;
using System.Net;
namespace AuthProxy
{
public class AuthProxyModule : IWebProxy
{
ICredentials crendential = new NetworkCredential("USERNAME", "PASSWORD");
public ICredentials Credentials
{
get
{
return crendential;
}
set
{
crendential = value;
}
}
public Uri GetProxy(Uri destination)
{
return new Uri("http://proxy:8080", UriKind.Absolute);
}
public bool IsBypassed(Uri host)
{
return host.IsLoopback;
}
}
}
在“用户名”和“密码”中,您应该为您设置正确的值。此外,您应该配置正确的 URI(在示例中为proxy:8080)构建解决方案,您可以在 solution/bin/Debug 文件夹中获取 AuthProxy.dll。此步骤基于此站点。
将 Authproxy.dll 文件复制到此目录:
- (2017、2015)C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE
- (仅限 2017)C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\ServiceHub\Services\Microsoft.Developer.IdentityService
- (仅限 2017)C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\ServiceHub\Services\Microsoft.Developer.Settings
- (仅限 2017)C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\ServiceHub\Hosts\ServiceHub.Host.CLR.x86
然后在和标签之间添加以下代码:
<system.net>
<defaultProxy>
<module type="AuthProxy.AuthProxyModule, AuthProxy"/>
</defaultProxy>
</system.net>
分别到步骤 2 中的目录中的此 XML 配置文件:
- devenv.exe.config(2015、2017)
- Microsoft.Developer.IdentityService.dll.config (2017)
- Microsoft.Developer.Settings.dll.config (2017)
- ServiceHub.Host.CLR.x86.exe.config (2017)
使用 Fiddler 进行监控。在 Fiddler 中,列Process显示devenv或servicehub.identityhub或servicehub.settingshost。生成请求的进程。
发生错误时,结果列显示407 。工作时显示200。连接 HTTP/1.1 将返回407。连接 HTTP/1.0 应该返回200。如果没有,您必须检查与该进程关联的配置文件。
在Inspectors选项卡中,单击请求的Auth视图和响应的Headers视图。这是了解它发生了什么的简单方法。
注意:请记住,如果您升级 Visual Studio,devenv.exe.config文件会被修改<system.net>
并由安装程序自动更改为:
<system.net>
<settings>
<ipv6 enabled="true"/>
</settings>
</system.net>
您应该重新配置流程。
这个解决方案看起来很复杂,但它对我有用,让我了解和监控它发生了什么。