C# Xamarin iOS(网络客户端IPv6拒绝)
我的Apple AppStore应用程序因不支持IPv6网络而被拒绝 这是我的WebClient服务器URL的声明。“ipv4”是服务器的ipv4地址。我把它放在这里不是为了安全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
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网络上测试时仍不工作。