gpt4 book ai didi

c# - 如何在 C# Windows 应用商店应用程序中获取新的默认 WebProxy 对象?

转载 作者:太空狗 更新时间:2023-10-29 20:37:07 25 4
gpt4 key购买 nike

我的问题来 self 在公司网络上发现的一个问题。我正在使用 Windows 8 进行开发,因此在我的情况下,IE10 设置为自动检测代理设置。

在我的 C# 应用程序中,我使用 System.Net.Http.HttpClient。我发现如果我脱机、发出失败的请求然后重新联机,我整个过程的默认 IWebProxy 对象将变得不可用。发出失败的请求很重要,否则没有问题。下面是一个示例,说明我如何获取这个脆弱的代理对象的句柄。

var defaultHandler = new HttpClientHandler();
var fragileProxy = defaultHandler.Proxy;
var httpClient = new HttpClient(defaultHandler);

经过一些实验后,我发现我可以通过调用 System.Net.WebProxy.GetDefaultProxy(); 获得一个工作代理;

然后我实现了一个 NetworkChangAwareProxy:IWebProxy。没错,我的 IWebProxy 的代理。在内部,只要 NetworkChange.NetworkAddressChanged,它就会运行并获取一个新的 WebProxy.GetDefaultProxy()。

我在应用程序启动时连接它,问题就消失了。

WebRequest.DefaultWebProxy =  new NetworkChangeAwareProxy();

希望有人能告诉我有更好的方法来解决这个问题。不过,我的具体问题是关于应用程序商店风格的应用程序。 (地铁应用程序)

System.Net.WebProxy.GetDefaultProxy() 不可用,System.Net.HttpWebRequest.DefaultWebProxy 在脱机并返回后仅返回相同的失效代理。

如何在 C# Windows 应用商店应用程序中获取新 IWebProxy 对象的句柄?

最佳答案

System.Net.WebProxy.GetDefaultProxy() 至少自 .net 3 起已被弃用,请改用 System.Net.WebRequest.GetSystemWebProxy()。对于 WinRT,他们删除了许多不推荐使用的方法。

参见 http://msdn.microsoft.com/en-us/library/system.net.webproxy.getdefaultproxy.aspxhttp://msdn.microsoft.com/en-us/library/system.net.webrequest.getsystemwebproxy.aspx

关于c# - 如何在 C# Windows 应用商店应用程序中获取新的默认 WebProxy 对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12630205/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com