忽略 Xamarin Forms 应用中的 VPN/代理配置文件

问题描述

是否可以忽略任何 vpn/代理配置文件(例如由 1.1.1.1 应用程序等创建的配置文件)并在 xamarin 表单应用程序中使用纯 WiFi 连接(如果可用)?

我正在开发一个无法在网络外部访问的 api,任何类型的代理或 vpn 都会干扰请求。

我的 HttpClient 和 httpclienthandler 代码

protected httpclienthandler ClientHandler {
        get {
            if(_clientHandler == null) {
                _clientHandler = new httpclienthandler() {
                    AllowAutoRedirect = true,AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate,ClientCertificateOptions = ClientCertificateOption.Automatic,CookieContainer = Cookies,UseCookies = true,UseProxy = false,SslProtocols = SslProtocols.Tls12 | SslProtocols.Tls11
                };

                _clientHandler.ServerCertificateCustomValidationCallback = CertificateValidationCallback;                   
            }

            return _clientHandler;
        }
    }

    protected HttpClient Client {
        get {
            if(_client == null) {
                _client = new HttpClient(ClientHandler,false);
                _client.Timeout = TimeSpan.FromSeconds(TIMEOUT);                    
                _client.DefaultRequestHeaders.UserAgent.ParseAdd($"{SharedInfo.ProjectName}/{SharedInfo.Version}");
            }

            return _client;
        } 
    }

我目前有强制wifi或移动数据连接的代码搜索了很多找到这个) 但这不是我目前所需要的。

public class ConnectionManager : IConnectionManager {
    Context _context => Platform.AppContext;

    ConnectivityManager _manager => (ConnectivityManager) _context.GetSystemService(Context.ConnectivityService);

    public void ForceMobileData() {
        NetworkRequest.Builder request = new NetworkRequest.Builder();
        request.AddTransportType(TransportType.Cellular);
        _manager.RegisterNetworkCallback(request.Build(),new CustomNetworkAvailableCallBack());
    }

    public void ForceWifi() {
        NetworkRequest.Builder request = new NetworkRequest.Builder();
        request.AddTransportType(TransportType.Wifi);
        request.AddCapability(NetCapability.NotVpn);
        _manager.RegisterNetworkCallback(request.Build(),new CustomNetworkAvailableCallBack());
    }

    /// <summary>
    /// Custom network available call back.
    /// </summary>
    public class CustomNetworkAvailableCallBack : ConnectivityManager.NetworkCallback {
        Context _context => Platform.AppContext;

        ConnectivityManager _manager => (ConnectivityManager) _context.GetSystemService(Context.ConnectivityService);

        public override void OnAvailable(Network network) {
            //ConnectivityManager.SetProcessDefaultNetwork(network);    //deprecated (but works even in Android P)
            _manager.BindProcesstoNetwork(network);           //this works in Android P
        }
    }
}

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)