【问题标题】:Xamarin Error Domain=NSURLErrorDomain Code=-1001 "The request timed out."Xamarin 错误域=NSURLErrorDomain 代码=-1001“请求超时。”
【发布时间】:2021-08-12 09:46:38
【问题描述】:

我是移动应用程序开发的新手,请帮我解决这个问题。我到处搜索,但找不到任何与此相关的信息,这可以解决问题。

我正在使用 Xamarin 开发 iOS 应用程序,在 Windows 10 中使用 Visual Studio 2019。我连接到 MacBook 以使用它。我已经确定,防火墙不会阻止,所以启用了 ipaddress 和端口。当我尝试将数据 (Refer DeviceLogin method) 发送到我的 azure http 触发函数(本地)时,出现以下错误。我的 azure 函数非常适合 Android 开发。

    "LocalDataTask <CD65AF78-89E3-4B23-AFD7-58BF760241BC>.<1>"
), NSLocalizedDescription=The request timed out., NSErrorFailingURLStringKey=http://xxxx:xxx/api/RegisterDevice, NSErrorFailingURLKey=http://xxxx:xxx/api/RegisterDevice, _kCFStreamErrorDomainKey=1}

我还确保使用 NSUrl。检查图像。

var _httpClient = DependencyService.Get<ICustomHttpClient>().HttpClient;
public bool RegisterDeviceLogin()
        {
            var deviceData = new Dictionary<string, string>
            {
                { "platformDeviceId", Constants.DeviceId }
            };

            var requestData = JsonConvert.SerializeObject(deviceData);
            
            var responseMessage = _httpClient
                .PostAsync(Constants.RegisterDeviceLoginUrl, new StringContent(requestData))
                .Result;
            return responseMessage.IsSuccessStatusCode;
        }

【问题讨论】:

  • iOS 模拟器/设备与本地 Azure 服务之间存在连接问题
  • @Jason,你能帮我解决一下吗,我需要什么配置来设置它,这样我才能摆脱这个问题
  • 这是基本的网络故障排除。您的设备/模拟器可以连接到运行该服务的机器吗?使用设备浏览器进行测试。您的服务设置是否可以处理远程请求?如果您使用的是开发 Web 服务器,它们通常只能默认处理 localhost 请求。
  • @Jason,是的,设备/模拟器能够连接到运行服务的机器。我没有看到连接有问题,这非常适用于android,因此,我为我的macbook ip地址打开了防火墙并打开了入站和出站端口号。我也试过完全禁用防火墙。

标签: xamarin xamarin.ios


【解决方案1】:

在 AppDelegate 的 FinishedLaunching 覆盖中创建 HttpClient,如下所示并试一试:

var configuration = NSUrlSessionConfiguration.DefaultSessionConfiguration;
configuration.TimeoutIntervalForRequest = 360.0;
configuration.TimeoutIntervalForResource = 360.0;
HttpClient = new System.Net.Http.HttpClient(new NSUrlSessionHandler(configuration));

【讨论】:

  • 对不起@Divyesh_08,仍然是同样的问题。这并没有解决它。
  • 我想知道是不是因为它在本地IP地址中并且iOS不允许交互?在进行 android 开发时,我们可以添加一个配置文件扩展名来包含本地 IP 地址。是否有类似的可用于 iOS 开发?
  • 你在 info.plist 中添加了 NSAppTransportSecurity 吗?添加一次并尝试 ir。
  • 我确实尝试过,但仍然没有成功``` NSExceptionDomainsxxxx:xxx</key> NSExceptionMinimumTLSVersion TLSv1.0NSExceptionRequiresForwardSecrecyNSExceptionAllowsInsecureHTTPLoadsNSIncludesSubdomains```
【解决方案2】:

我发现了问题,我的 azure 函数在 Windows 机器上运行,作为 localhost 运行。当我使用 Xamarin 为 iPhone 开发时,显然我必须使用 Mac PC,这就是问题所在。 Mac 上的 iPhone 无法连接 http://localhost,所以当我们指定 ipaddress 而不是 localhost 时,它找不到使用该 ipaddress 运行的 my azure 函数。

我解决问题的一种方法是,也在 MacBook 中运行我的 azure 函数,但理想情况下,我想将我的 azure 函数更改为在本地工作时使用 ip 地址而不是 localhost,或者提供从 localhost 更改为的选项ip地址。

【讨论】:

    猜你喜欢
    • 2015-01-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-24
    • 1970-01-01
    • 2015-01-25
    相关资源
    最近更新 更多