私のApple AppStoreアプリケーションは、IPv6ネットワークをサポートしていないため拒否されました。Xamarin iOS(WebClient 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にIPv4の代わりにIPv6を追加しようとしました。私も試しましたhttp://ipv6/api.phpまた、http://[ipv6]/api.php
このタイプの接続(WebClient)の解決策は見つかりません。私はTCP/IPプロトコルを持つ他のソリューションしか見つけず、私のアプリでそれを変更したくありません。
私はIPv6についてもXamarinのブログを見ましたが、私は何をすべきか分かりません。権限のために、リンクを追加できませんでした。
コードを変更して動作させるにはどうすればよいですか?ありがとうございました:)
IPアドレスはプライベートな情報ではありません。いずれの場合でも、IPアドレスリテラルは使用できません。 –
xamarin iOSのWebRequestがipv6環境で動作しないのはなぜですか?(http://stackoverflow.com/questions/40502766/why-is-my-webrequest-in-xamarin-ios-failing-in-ipv6 -environment) –
IPをHostnameに置き換えると正常に動作しますか? –