NameResolutionFailure с внешним IP-адресом после обновления до Xamarin.iOS 9.8.0.323

Приложение My Xamarin использует внешний IP-адрес при связи с внутренним веб-сервисом. С Xamarin.iOS 9.6.2.4 вызов успешен. После обновления до Xamarin.iOS 9.8.0.323 я теперь получаю исключение с сообщением "Ошибка:NameResolutionFailure".

Если я переключусь на использование внутреннего IP-адреса или FQDN, вызов будет успешным.

Похоже, это ошибка в последнем обновлении Xamarin, или что-то должно быть изменено в процессе выполнения запроса?

try
{
  //Exception message - Error:NameResolutionFailure
  string url = "http://[External-IP-Address]:8081/MyWebService/api/GetByID/1";

  //The following two URLs are successful
  //string url = "http://[Internal-IP-Address]:8081/MyWebService/api/GetByID/1";
  //string url = "http://[Fully-Qualified-Domain-Name]:8081/MyWebService/api/GetByID/1";

  HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(new Uri(url));
  request.ContentType = "application/json";
  request.Method = "GET";
  request.Timeout = 10 * 60 * 1000;

  using (WebResponse response = await request.GetResponseAsync())
  {
    using (StreamReader reader = new StreamReader(response.GetResponseStream()))
    {
      string jsonData = reader.ReadToEnd();
    }
  }
}
catch (Exception e)
{
  Console.WriteLine(e.Message);
}

Трассировка стека исключений

at System.Net.HttpWebRequest.EndGetResponse (IAsyncResult asyncResult) [0x0005e] in /Users/builder/data/lanes/3339/39ebb778/source/maccore/_build/Library/Frameworks/Xamarin.iOS.framework/Versions/git/src/mono/mcs/class/System/System.Net/HttpWebRequest.cs:1005 
at System.Threading.Tasks.TaskFactory`1[TResult].FromAsyncCoreLogic (IAsyncResult iar, System.Func`2 endFunction, System.Action`1 endAction, System.Threading.Tasks.Task`1 promise, Boolean requiresSynchronization) [0x00014] in /Users/builder/data/lanes/3339/39ebb778/source/maccore/_build/Library/Frameworks/Xamarin.iOS.framework/Versions/git/src/mono/external/referencesource/mscorlib/system/threading/Tasks/FutureFactory.cs:550 
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw () [0x0000c] in /Users/builder/data/lanes/3339/39ebb778/source/maccore/_build/Library/Frameworks/Xamarin.iOS.framework/Versions/git/src/mono/external/referencesource/mscorlib/system/runtime/exceptionservices/exceptionservicescommon.cs:143 
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (System.Threading.Tasks.Task task) [0x00047] in /Users/builder/data/lanes/3339/39ebb778/source/maccore/_build/Library/Frameworks/Xamarin.iOS.framework/Versions/git/src/mono/external/referencesource/mscorlib/system/runtime/compilerservices/TaskAwaiter.cs:187 
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (System.Threading.Tasks.Task task) [0x0002e] in /Users/builder/data/lanes/3339/39ebb778/source/maccore/_build/Library/Frameworks/Xamarin.iOS.framework/Versions/git/src/mono/external/referencesource/mscorlib/system/runtime/compilerservices/TaskAwaiter.cs:156 
at System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd (System.Threading.Tasks.Task task) [0x0000b] in /Users/builder/data/lanes/3339/39ebb778/source/maccore/_build/Library/Frameworks/Xamarin.iOS.framework/Versions/git/src/mono/external/referencesource/mscorlib/system/runtime/compilerservices/TaskAwaiter.cs:128 
at System.Runtime.CompilerServices.TaskAwaiter`1[TResult].GetResult () [0x00000] in /Users/builder/data/lanes/3339/39ebb778/source/maccore/_build/Library/Frameworks/Xamarin.iOS.framework/Versions/git/src/mono/external/referencesource/mscorlib/system/runtime/compilerservices/TaskAwaiter.cs:357 
at TestURL.ViewController+<ViewDidLoad>c__async0.MoveNext () [0x000b0] in /Users/Administrator/Projects/TestURL/TestURL/ViewController.cs:26 

Дополнительная информация:

  • Запуск на симуляторе iPhone 6s (iOS 9.3)

1 ответ

Решение

После некоторых исследований это известная проблема с базовым выпуском Cycle 7. Мы отслеживаем это по следующей общедоступной ошибке: https://bugzilla.xamarin.com/show_bug.cgi?id=41782

В настоящее время лучшим вариантом будет остаться на 6-м цикле или (если возможно) использовать полное доменное имя.

Спасибо!

Другие вопросы по тегам