Mac用Visual Studioを使用してXamarinを使用してアプリケーションを開発しています。 私はiOSとAndroidの両方を対象にC#を書いています。AndroidからのCosmosDBを使用した待ち時間のタイムアウトXamarin
Microsoft AzureでもCosmosDBを使用しています。
問題は、AndroidがCosmosDBにアクセスしようとするときに発生します。私はCosmos用のMongo APIを使用しています。
タイムアウトが CompositeServerSelector {セレクタ= ReadPreferenceServerSelectorを使用してサーバを選択30000ms後に発生した{ ReadPreference = {モード:次のよう
Iは、Androidで得るエラーメッセージであるプライマリ}}、LatencyLimitingServerSelector { AllowedLatencyRange = 00:00:00.0150000}}。クラスタ のクライアントビューは{ClusterId: "2"、ConnectionMode: "ReplicaSet"、タイプ: "ReplicaSet"、状態: "Disconnected"、サーバー:[{ServerId:{ ClusterId:2、EndPoint: "不明/ aspire-cosmosdb.documents.azure.com:10255 "}"、エンドポイント: "未指定/ aspire-cosmosdb.documents.azure.com:10255"、状態: "切断"、タイプ: "不明"}] }。
これは私のコードです:
using System;
using System.Diagnostics;
using System.Threading.Tasks;
using MongoDB.Driver;
string dsn = "mongodb://myusername:[email protected]nts.azure.com: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 PortalのCosmosDBクイックスタートからコピー&ペーストしています。私はまた、このコードを取って、C#のコンソールアプリに入れて、それも動作します。しかし、同じコードはAndroidでは動作しません。どうして?
私はAndroidのシミュレータと実際のAndroidデバイスの両方でこれを試しましたが、両方の時間でこの30秒のタイムアウトが発生します。私はAndroidのインターネット許可も有効にしましたが、喜びはありません。助けてください! - 2.4.4
- MongoDB.Driver -2.4.4
- MongoDB.Driver.Core:私は執筆時点でNuget経由で最新のパッケージを参照してきた
- 2.4.4
注:私はdsnから個人情報を難読化していますが、それはあなたにその大まかな形式を示す必要があります。実際のdsnはAzureポータルからのcosmosdb dsn接続文字列の直接コピー&ペーストです。
次に、ドライバを2.4.4から最新のバージョンに更新しました。それでもなお同じ問題が残っている。 –