我正在使用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引用了最新的软件包:
注意:我已经对dsn中的个人详细信息进行了模糊处理,但它应该向您显示它的粗略格式。实际的dsn是Azure门户中cosmosdb dsn连接字符串的直接复制和粘贴。