私はXamarin Forms + DocumentDBで作成されたアプリケーションの重大なバグを解決しようとしています。私はMicrosoft.Azure.DocumentDB.Coreというパッケージを使ってデータを保存しています。 Azureアカウントはブラジル南部(GMT-3)でホストされており、アプリは正常に動作します。しかし、ロケール時間GMT-4の地区では、上記の例外を除いてアプリケーションがクラッシュすることがあります。DocumentDB + Xamarin - 許可トークンが無効です
The authorization token is not valid at the current time. Please
create another token and retry (token start time: Mon, 27 Mar 2017
00:07:41 GMT, token expiry time: Mon, 27 Mar 2017 00:22:41 GMT,
current server time: Mon, 27 Mar 2017 01:08:24 GMT).
ActivityId: 81487924-68ee-4329-bb61-02f88ea7b6ec
GMT-4を取得するためにデバイスを1時間遅らせ、アプリを実行すると例外が表示されます。
//---------------------------------------------static Repository initialize
DocumentClient client;
const string collectionId = "user";
Uri uri = UriFactory.CreateDocumentCollectionUri(Constants.DB_ID, collectionId);
//---------------------------------------------static constructor
UserDataService()
{
client = new DocumentClient(
new Uri(Constants.DB_ACCOUNT_URL),
Constants.DB_ACCOUNT_KEY);
}
async public Task<User> GetUserByCPF(string cpf)
{
var fedOpt = new FeedOptions { MaxItemCount = -1 };
var query = client.CreateDocumentQuery<User>(uri, fedOpt)
.Where(x => x.Id == _id)
.AsDocumentQuery();
var lst = new List<User>();
while (query.HasMoreResults)
{
lst.AddRange(await query.ExecuteNextAsync<User>());
}
return lst.FirstOrDefault();
}
query.ExecuteNextAsyncの例外が発生します。
エラーメッセージに別のトークンを作成すると表示されますが、マスターキーを使用しています。誰かがマスターキーへのトークンの作成方法や有効期限を増やす方法を知っていますか?
私の知る限りでは、デフォルトでは、リソーストークンの有効期間は1時間です。それを上書きして最大5時間まで増やすことができます。 このURLを参照してください: https://docs.microsoft.com/en-us/rest/api/documentdb/permissions このスタックオーバーフロースレッド、 http://stackoverflow.com/questions/41761552/how-文書ベースのdb-rest-apiリソーストークンの延長を –
こんにちは@SaadMehmoodが助けてくれてありがとう。私はマスターキーのトークンを作成するこのアプローチを試みたが、アプリはまだクラッシュします。 – Leandro
私はトムと同じ行に沿って考えています。すでにトークンを持っているが、時間を変更したときにエラーが発生したと仮定します。残念ながら、彼らはまだソースを公開していないので、私は彼らがトークンをどのように格納するか見るために掘り下げることはできません。 https://github.com/Azure/azure-documentdb-dotnet/tree/master/sdk –