3

以下のコードを使用して、コンテナーの共有アクセス キーを生成しようとしています。

string sas = azureContainer.GetSharedAccessSignature (new SharedAccessPolicy ()
{
    SharedAccessStartTime =  DateTime.UtcNow,
    SharedAccessExpiryTime = DateTime.UtcNow.AddHours(1),
    Permissions = SharedAccessPermissions.Write | SharedAccessPermissions.Read
});

この場合、共有アクセス署名は正常に機能します。クライアントはコンテナにファイルを正常にアップロードします。しかし、時間を 1 時間以上 (たとえば 2) に設定すると、クライアント側でファイルをアップロードしようとすると例外が発生します。

サーバーは要求を認証できませんでした。Authorization ヘッダーの値が、署名を含めて正しく形成されていることを確認してください。

同様に、設定しようとするとDateTime.UtcNow.AddMinutes(61)、同じ例外が発生します。60 分以下の時間であれば問題なく動作します。

私の質問: Shared Access Signature の最大時間は 60 分ですか? どのドキュメントにもそのようなものは見つかりませんでした。

4

2 に答える 2

3

この回答で指摘したように、2012 年春のリリースから、1 時間の制限が解除されました。MSDN の記事はこちら. 今のところ、最新の SDK+Tools の一部としてまだリリースされていないため、githubから (.net を使用していると仮定して) v1.7.1 ライブラリを独自にプルしてビルドする必要があります。このバージョンのライブラリは、2012-02-12 プロトコル バージョンを使用します。

于 2012-09-04T17:36:36.120 に答える
2

実際、これは文書化されています: CloudBlob.GetSharedAccessSignature メソッド (SharedAccessPolicy)

... 単一の共有アクセス署名で指定できます。この場合、署名が有効な期間は 1 時間に制限されます。...

1 時間より長くしたい場合は、代わりにコンテナー レベルのアクセス ポリシーを使用することをお勧めします (これは取り消すこともできます)。

于 2012-09-04T17:27:12.600 に答える