【发布时间】:2016-11-09 13:51:45
【问题描述】:
我的 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 网络中抛出异常。我已经尝试过这个解决方案Xamarin iOS IPv6 App Store Rejection,但它不起作用。我还尝试在变量 DefaultServerUrl 中添加 IPv6 而不是 IPv4。我也试过http://ipv6/api.php 和http://[ipv6]/api.php
找不到此类连接 (WebClient) 的任何解决方案。我只找到了使用 TCP/IP 协议的其他解决方案,我不想在我的应用中更改它。
我还看到了有关 IPv6 的 Xamarin 博客,但我不知道该怎么做。由于权限问题,无法为其添加链接。
我应该对我的代码进行哪些更改才能使其正常工作?谢谢你的时间:)
【问题讨论】:
-
IP 地址不是私人信息。在任何情况下,您都不能使用 IP 地址文字。
-
那么,当我用主机名替换 IP 时,它会起作用,对吧?
-
我尝试将 IP 更改为主机名,但仍然无法正常工作。然后我尝试将 WebClient 更改为 HttpClient(也尝试了 ModernHttpClient)。在 IPv6 网络上测试时仍然无法正常工作。
标签: c# ios xamarin xamarin.ios ipv6