Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Azure storage 获取Azure存储帐户lvel SAS的到期日期?_Azure Storage - Fatal编程技术网

Azure storage 获取Azure存储帐户lvel SAS的到期日期?

Azure storage 获取Azure存储帐户lvel SAS的到期日期?,azure-storage,Azure Storage,我正在寻找在Azure存储帐户上查找任何过期或即将过期SAS签名的方法 使用C#我已经检查了CloudStorageAccount类的所有公共属性和方法,我还查看了ILSpy和Azure资源管理器中的此类-只是看不到检索SAS过期日期/时间的方法 void Main() { CloudStorageAccount account = new CloudStorageAccount(new StorageCredentials(GetName(), GetKey(

我正在寻找在Azure存储帐户上查找任何过期或即将过期SAS签名的方法

使用C#我已经检查了CloudStorageAccount类的所有公共属性和方法,我还查看了ILSpy和Azure资源管理器中的此类-只是看不到检索SAS过期日期/时间的方法

void Main()
{   
    CloudStorageAccount account = new CloudStorageAccount(new 
         StorageCredentials(GetName(), GetKey()), true);
    account.Dump();

    CloudBlobClient client = account.CreateCloudBlobClient();

    foreach (CloudBlobContainer container in client.ListContainers())
    {
        var sabp = new SharedAccessBlobPolicy();
        var sas = container.GetSharedAccessSignature(sabp);
        Console.WriteLine(container.Name);
        Console.WriteLine(sas);
        Console.WriteLine();
    }   
}

internal string GetName() {return @"myaccountname";}
internal string GetKey() {return @"myaccountkey";}
没有错误,但也无法(我可以看到)获得帐户级别SAS。
注意:我不想要任何blob SAS,而是针对容器设置SAS。
谢谢

如果您想知道您的帐户级别SAS是否已过期或即将过期,基于,您只需检查
SignedExpiry
参数即可。在SAS中,其名称为
se

请尝试以下代码以获取具有blob对象读取权限且具有1天生存期的帐户级别SAS:

    static void Main(string[] args)
    {
        CloudStorageAccount account = new CloudStorageAccount(new StorageCredentials("<storage  account name>", "<storage key>"), true);

        var accesspolicy = new SharedAccessAccountPolicy()
        {
            Permissions = SharedAccessAccountPermissions.Read,
            Services = SharedAccessAccountServices.Blob,
            SharedAccessExpiryTime = DateTime.UtcNow.AddDays(1),
            ResourceTypes = SharedAccessAccountResourceTypes.Object
        };
        var accountSAS = account.GetSharedAccessSignature(accesspolicy);

        Console.WriteLine(accountSAS);

        Console.ReadKey();

    }
static void Main(字符串[]args)
{
CloudStorageAccount=new CloudStorageAccount(new StorageCredentials(“,”),true);
var accesspolicy=new-SharedAccessAccountPolicy()
{
权限=SharedAccessAccountPermissions.Read,
Services=SharedAccessAccountServices.Blob,
SharedAccessExpiryTime=DateTime.UtcNow.AddDays(1),
ResourceTypes=SharedAccessAccountResourceTypes.Object
};
var accountSAS=account.GetSharedAccessSignature(accesspolicy);
控制台写入线(accountSAS);
Console.ReadKey();
}
结果:

如您所见,
se
参数在那里,指示此sas将在1天后过期

因此,您可以使用此sas访问您的Blob:

如果您想知道您的帐户级别SAS是否已过期或即将过期,基于,您只需检查
SignedExpiry
参数即可。在SAS中,其名称为
se

请尝试以下代码以获取具有blob对象读取权限且具有1天生存期的帐户级别SAS:

    static void Main(string[] args)
    {
        CloudStorageAccount account = new CloudStorageAccount(new StorageCredentials("<storage  account name>", "<storage key>"), true);

        var accesspolicy = new SharedAccessAccountPolicy()
        {
            Permissions = SharedAccessAccountPermissions.Read,
            Services = SharedAccessAccountServices.Blob,
            SharedAccessExpiryTime = DateTime.UtcNow.AddDays(1),
            ResourceTypes = SharedAccessAccountResourceTypes.Object
        };
        var accountSAS = account.GetSharedAccessSignature(accesspolicy);

        Console.WriteLine(accountSAS);

        Console.ReadKey();

    }
static void Main(字符串[]args)
{
CloudStorageAccount=new CloudStorageAccount(new StorageCredentials(“,”),true);
var accesspolicy=new-SharedAccessAccountPolicy()
{
权限=SharedAccessAccountPermissions.Read,
Services=SharedAccessAccountServices.Blob,
SharedAccessExpiryTime=DateTime.UtcNow.AddDays(1),
ResourceTypes=SharedAccessAccountResourceTypes.Object
};
var accountSAS=account.GetSharedAccessSignature(accesspolicy);
控制台写入线(accountSAS);
Console.ReadKey();
}
结果:

如您所见,
se
参数在那里,指示此sas将在1天后过期

因此,您可以使用此sas访问您的Blob:

您好,我不知道如何为已创建的帐户级别SA设置此设置。我的对象类型是CloudStorageAccount,但它不公开任何称为SignedExpiry或se的内容。此外,将是一个对这个帐户的SA数,所以我如何得到他们所有?CloudStorageAccount=new CloudStorageAccount(new-StorageCredentials(GetName(),GetKey()),true);嗨@Dave,我已经更新了我的答案,请检查一下。嗨@Stanley,谢谢更新的代码示例。我稍微修改了它以使用SharedAccessStartTime,但我仍然不知道如何获得多个帐户级别的SA
我今天向该容器添加了三个新SA,它们如下:start=2019-11-06 expires=2019-11-07?sv=2019-02-02&ss=b&srt=sco&sp=r&se=2019-11-07T20:39:12Z&st=2019-11-06T12:37:12Z&st=2019-11-06 expires=2019-11-08?sv-02-02&ss=b&srt=sco&sp=r&se=2019-11-08T20:39:12Z&st=2019-11-06T12:37:12Z&br>sv=2019-02-02&ss=b&srt=sco&sp=r&se=2019-11-09T20:39:12Z&st=2019-11-06T12:37:12Z&

但代码只返回一个,而不是其中任何一个。嗨,@Dave,我不太确定多帐户级别的SAS,你能告诉我更多吗?似乎SAS中的开始时间和结束时间对你来说都是正确的。你好,不了解如何为已创建的帐户级别SA设置此设置。我的对象类型是CloudStorageAccount,但它不公开任何称为SignedExpiry或se的内容。此外,将是一个对这个帐户的SA数,所以我如何得到他们所有?CloudStorageAccount=new CloudStorageAccount(new-StorageCredentials(GetName(),GetKey()),true);嗨@Dave,我已经更新了我的答案,请检查一下。嗨@Stanley,谢谢更新的代码示例。我稍微修改了它以使用SharedAccessStartTime,但我仍然不知道如何获得多个帐户级别的SA
我今天向该容器添加了三个新SA,它们如下:start=2019-11-06 expires=2019-11-07?sv=2019-02-02&ss=b&srt=sco&sp=r&se=2019-11-07T20:39:12Z&st=2019-11-06T12:37:12Z&st=2019-11-06 expires=2019-11-08?sv-02-02&ss=b&srt=sco&sp=r&se=2019-11-08T20:39:12Z&st=2019-11-06T12:37:12Z&br>sv=2019-02-02&ss=b&srt=sco&sp=r&se=2019-11-09T20:39:12Z&st=2019-11-06T12:37:12Z&

但代码只返回一个,而不是其中任何一个。嗨,@Dave,我不太确定多帐户级别的SAS,你能告诉我更多吗?似乎SAS的开始时间和结束时间在你的情况下都是正确的。你的目的是什么?在上面的代码中获取sas令牌的过期时间?您的目的是什么?在上面的代码中获取sas令牌的过期时间?