私は@Federico Dipumaに同意します。私は私のプロジェクトの一つでこの方法を使用しました。私は自分のコードを共有するためにここにいます。
生成コードSAS URL。
public string GetBlobSasUri(string containerName, string blobName, string connectionstring)
{
CloudStorageAccount storageAccount = CloudStorageAccount.Parse(connectionstring);
CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();
var container = blobClient.GetContainerReference(containerName);
CloudBlockBlob blockBlob = container.GetBlockBlobReference(blobName);
//Set the expiry time and permissions for the blob.
//In this case no start time is specified, so the shared access signature becomes valid immediately.
SharedAccessBlobPolicy sasConstraints = new SharedAccessBlobPolicy();
sasConstraints.SharedAccessExpiryTime = DateTime.UtcNow.AddMinutes(10);
sasConstraints.Permissions = SharedAccessBlobPermissions.Read;
//Generate the shared access signature on the blob, setting the constraints directly on the signature.
string sasContainerToken = blockBlob.GetSharedAccessSignature(sasConstraints);
//Return the URI string for the blob, including the SAS token.
return blockBlob.Uri + sasContainerToken;
}
ウェブアプリケーションのURLにリダイレクトします。
public ActionResult FileDownload()
{
string blobURL = GetBlobSasUri("blob name","container name", "connection string");
return Redirect(blobURL);
}
パフォーマンス上の理由から、SASトークンを使用することをお勧めします。ページロード時にblob URLを生成する代わりに、APIへのリンクを作成し、トークンを生成し、リダイレクト応答をフルパス(uri + token)に返すだけで、空のストレージに戻すことができます。このようにして、ユーザがブロブへの古いリンクを得る可能性はない。 –
私がここに持つ唯一の問題は、ユーザーが実際のPDFへのリンクを取得して電子メールで送信することです。トークンが期限切れになると、リンクは切断されます。そうでなければ、それは基本的に公開されているので、別の方法があるかもしれないと思った。 – alvipeo
あなたの意図する動作が何であるかははっきりしないが、あなたが導入しているものは、どのような方法を使用しても問題ではない。ユーザーが**プライベート**ファイルへのリンクをメールで送信するのはなぜですか? –