C++ Azure APIを使用して、Azure上のコンテナの共有アクセス署名を生成し、アクセス文字列を取得します。しかし、良い例は見つけられません。ほとんどすべての例はC#にあります。のみこれを見つけ、ここでhttps://docs.microsoft.com/en-us/azure/storage/files/storage-c-plus-plus-how-to-use-filesC++でAzureコンテナの共有アクセスシグネチャを取得する方法
は、私が何をしたか、実行後
// Retrieve a reference to a previously created container.
azure::storage::cloud_blob_container container = blob_client.get_container_reference(s2ws(eventID));
// Create the container if it doesn't already exist.
container.create_if_not_exists();
// Get the current permissions for the event.
auto blobPermissions = container.download_permissions();
// Create and assign a policy
utility::string_t policy_name = s2ws("Signature" + eventID);
azure::storage::blob_shared_access_policy policy = azure::storage::blob_shared_access_policy();
// set expire date
policy.set_expiry(utility::datetime::utc_now() + utility::datetime::from_days(10));
//give read and write permissions
policy.set_permissions(azure::storage::blob_shared_access_policy::permissions::read);
azure::storage::shared_access_policies<azure::storage::blob_shared_access_policy> policies;
//add the new shared policy
policies.insert(std::make_pair(policy_name, policy));
blobPermissions.set_policies(policies);
blobPermissions.set_public_access(azure::storage::blob_container_public_access_type::off);
container.upload_permissions(blobPermissions);
auto token = container.get_shared_access_signature(policy, policy_name);
これで、私はポリシーが正常にコンテナに設定されて見ることができますが、最後の行で得たトークンは右ではありません。また、この関数を終了するときには例外が常に存在し、ブレークポイントは_Deallocate()に配置されます。
誰かが自分のコードで何が問題なのか教えていただけますか?またはこれに関するいくつかの例?どうもありがとうございました。
編集
私が得たトークンは、このトークンによって
"sv=2016-05-31&si=Signature11111122222222&sig=JDW33j1Gzv00REFfr8Xjz5kavH18wme8E7vZ%2FFqUj3Y%3D&spr=https%2Chttp&se=2027-09-09T05%3A54%3A29Z&sp=r&sr=c"
、のように見える、私は私のブロブをアクセスできませんでした。このポリシーを使用しての「Microsoft Azureストレージエクスプローラー」により作成された右のトークンが例外について
?sv=2016-05-31&si=Signature11111122222222&sr=c&sig=9tS91DUK7nkIlIFZDmdAdlNEfN2HYYbvhc10iimP1sk%3D
、のように見える、私は、関数内のすべてのこれらのコードを入れました。最後の行がなければ、すべてが問題ありません。しかし、最後の行が追加された場合、この関数を終了すると、例外がスローされ、ブレークポイントが発生したという。これは、中)_Deallocate(の最後の行で停止 "C:\ 2017 \コミュニティ\ VC \ツールのMicrosoft Visual Studioの\ \ MSVC \ 14.10.25017 \は\ xmemory0を含める"、
::operator delete(_Ptr);
はなぜこの見当がつかない例外がスローされ、どのように私のコードで捕まえることができないように見えるのでデバッグするのですか?
編集
返されたトークンが正しい
auto token = container.get_shared_access_signature(azure::storage::blob_shared_access_policy(), policy_name);
に最後の行を変更した後、私はそれを使用して、私のブロブをアクセスすることができます。しかし、迷惑な例外は
:-(まだそこだけデバッグに構築するときに例外のみ起こった。リリースには、すべてがOKであれば。それは環境をコンパイルに関連していますので、多分見つけ
編集です。
「最後の行にあるトークンが正しくない」ということを説明してください。質問を編集し、この情報を含めてください。また、例外の詳細を含めてください。 –
返事をありがとう。編集済み@GauravMantri – Harrison
Microsoft Azure Explorerのトークンが機能していて、編集前のトークンがなぜそうでなかったのかについての説明が必要ですか?私にお知らせください私は詳細を提供します。 –