使用Android Xamarin的CosmosDB延迟超时

问题描述 投票:0回答:1

我正在使用Xamarin使用Visual Studio for Mac开发一个应用程序。我正在编写C#来定位iOS和Android。

我们还在Microsoft Azure上使用CosmosDB。

当试图让Android访问CosmosDB时会出现问题。请注意,我正在使用Mongo API for Cosmos。

我在Android中收到的错误消息如下:

使用CompositeServerSelector {Selectors = ReadPreferenceServerSelector {ReadPreference = {Mode:Primary}},LatencyLimitingServerSelector {AllowedLatencyRange = 00:00:00.0150000}}选择服务器30000ms后发生超时。集群状态的客户端视图是{ClusterId:“2”,ConnectionMode:“ReplicaSet”,类型:“ReplicaSet”,状态:“Disconnected”,服务器:[{ServerId:“{ClusterId:2,EndPoint:”Unspecified / aspire- cosmosdb.documents.azure.com:10255“}”,EndPoint:“未指定/ aspire-cosmosdb.documents.azure.com:10255”,状态:“已断开连接”,类型:“未知”}}}。

这是我的代码:

using System;
using System.Diagnostics;
using System.Threading.Tasks;
using MongoDB.Driver;

string dsn = "mongodb://myusername:[email protected]:10255/?ssl=true&replicaSet=globaldb";
string databaseName = "mydatabasename";

Debug.WriteLine("Initializing Cosmos DB!");
MongoClientSettings settings = MongoClientSettings.FromUrl(new MongoUrl(dsn));
settings.SslSettings = new SslSettings() { EnabledSslProtocols = SslProtocols.Tls12 };
var mongoClient = new MongoClient(settings);
var db = mongoClient.GetDatabase(databaseName);

var databases = (await mongoClient.ListDatabasesAsync()).ToList();
foreach (var d in databases)
{
    Debug.WriteLine(d.AsBsonDocument);
}

这对xamarin.ios 100%正常。每次连接。该代码几乎可以从Azure门户上的CosmosDB快速入门复制和粘贴。我也把这个代码放在一个C#Console应用程序中,它也可以工作。但是,相同的代码在Android上不起作用。为什么?

我已经在Android模拟器和真正的Android设备上尝试了这一点,并且两次都获得了30秒的超时。我也在Android上启用了Internet权限,但没有任何乐趣。请帮忙!

在撰写本文时,我已经通过Nuget引用了最新的软件包:

  • MongoDB.Driver -2.4.4
  • MongoDB.Driver.Core - 2.4.4
  • MongoDB.Bson - 2.4.4

注意:我已经对dsn中的个人详细信息进行了模糊处理,但它应该向您显示它的粗略格式。实际的dsn是Azure门户中cosmosdb dsn连接字符串的直接复制和粘贴。

mongodb xamarin azure-cosmosdb xamarin.droid
1个回答
0
投票

好吧,经过大量的轰炸,解决方案相当简单。

CosmosDB仅支持TLS 1.2。

进入Droid项目设置(右键单击项目>选项),然后转到Android Build> SSL / TLS Implementation。

我被设置为'默认'。我想在撰写本文时“默认”不支持TLS 1.2。至少对于Mac来说,至少不是Xamarin。这是一个很大的问题。将它切换到Native TLS 1.2+并且神奇地它只是工作!现在可以通过Android连接到CosmosDB。

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.