Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/apache-kafka/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Xamarin iOS(网络客户端IPv6拒绝)_C#_Ios_Xamarin_Xamarin.ios_Ipv6 - Fatal编程技术网

C# Xamarin iOS(网络客户端IPv6拒绝)

C# Xamarin iOS(网络客户端IPv6拒绝),c#,ios,xamarin,xamarin.ios,ipv6,C#,Ios,Xamarin,Xamarin.ios,Ipv6,我的Apple AppStore应用程序因不支持IPv6网络而被拒绝 这是我的WebClient服务器URL的声明。“ipv4”是服务器的ipv4地址。我把它放在这里不是为了安全 RemoteServerConnector.Instance.DefaultServerUrl = "http://ipv4/api.php"; 然后我有这个方法来检查连接: private class MyWebClient : WebClient { public int timeOut { g

我的Apple AppStore应用程序因不支持IPv6网络而被拒绝

这是我的WebClient服务器URL的声明。“ipv4”是服务器的ipv4地址。我把它放在这里不是为了安全

RemoteServerConnector.Instance.DefaultServerUrl = "http://ipv4/api.php"; 
然后我有这个方法来检查连接:

   private class MyWebClient : WebClient {

    public int timeOut { get; set; }

    protected override WebRequest GetWebRequest(Uri address) {
        WebRequest w = base.GetWebRequest(address);
        w.Timeout = timeOut;
        return w;
    }
   }

   public bool checkInternetConnection() {
            try {
                using(MyWebClient client = new MyWebClient()) {
                    client.timeOut = ApiUrls.RemoteServerConnectorTestTimeout;
                    var removeString = "api.php";
                    var testHttp = DefaultServerUrl.EndsWith(removeString) ? DefaultServerUrl.Remove(DefaultServerUrl.Length - removeString.Length, removeString.Length) : DefaultServerUrl;            

                    using(client.OpenRead(testHttp)) {
                        return true;
                    }
                }
            } catch(WebException ex) {
                return ex.Status != WebExceptionStatus.ConnectFailure;
            } catch(Exception ex) {
                return false;
            }
        }
它总是在IPv6网络中引发异常。我已经尝试过这个解决方案,但不起作用。我还尝试在变量DefaultServerUrl中添加IPv6而不是IPv4。我也试过,也试过

找不到此类型的连接(WebClient)的任何解决方案。我只找到了其他使用TCP/IP协议的解决方案,我不想在我的应用程序中更改它

我也看到了Xamarin关于IPv6的博客,但我不知道该怎么办。由于权限问题,无法向其添加链接


我应该在我的代码中更改什么以使其工作?谢谢您的时间:)

因为我几乎尝试了所有方法,但都没有成功,所以我检查了客户服务器的设置。没有IPv6的设置。我们修复了它,现在它与ModernHttpClient一起工作。我将应用程序从IPv4地址切换到主机名

我的ModernHttpClient代码

                var handler = new NativeMessageHandler();
                using (var client = new HttpClient(handler))
                {
                    client.Timeout = TimeSpan.FromMilliseconds(ApiUrls.RemoteServerConnectorTestTimeout);
                    var removeString = "api.php";
                    var testHttp = DefaultServerUrl.EndsWith(removeString) ? DefaultServerUrl.Remove(DefaultServerUrl.Length - removeString.Length, removeString.Length) : DefaultServerUrl;

                    using (client.GetAsync(testHttp).Result)
                    {
                        return true;
                    }

                }

IP地址不是私有信息。在任何情况下,您都不能使用IP地址文本。可能是重复的,所以,当我用主机名替换IP时,它会工作,对吗?我尝试将IP更改为主机名,但仍然无法工作。然后我尝试将WebClient更改为HttpClient(也尝试了ModernHttpClient)。在IPv6网络上测试时仍不工作。