You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure存储账户C#代码设置SAS过期时间超1年报错,设10000年失败求助

Azure SAS设置10000年过期时间不可行,原因及解决办法

报错原因

这个操作确实不可行,问题来自两个层面的限制:

  • .NET类型范围限制:DateTimeOffset的有效取值区间是公元0001年1月1日到9999年12月31日。调用AddYears(10000)会让计算后的时间超出这个范围,直接触发The added or subtracted value results in an un-representable DateTime错误。
  • Azure存储服务限制:就算绕开.NET的限制,Azure存储本身也不支持过期时间晚于9999-12-31T23:59:59Z的SAS令牌。

可行的解决办法

1. 设置最大允许的过期时间

如果需要尽可能久的有效期,可以直接把过期时间设为DateTimeOffset的最大值(这也是Azure存储允许的上限):

BlobSasBuilder sasBuilder = new BlobSasBuilder()
{             
   ExpiresOn = DateTimeOffset.MaxValue
};

也可以手动指定9999年的最后一刻:

BlobSasBuilder sasBuilder = new BlobSasBuilder()
{             
   ExpiresOn = new DateTimeOffset(9999, 12, 31, 23, 59, 59, TimeSpan.Zero)
};

2. 采用更适合长期访问的方案

如果需要近乎永久的访问权限,SAS并不是最优选择,推荐以下方式:

  • Azure AD托管标识:给访问资源的应用或服务分配托管标识,通过RBAC配置权限,无需管理令牌过期,安全性也更高。
  • 存储账户级SAS:创建账户级别的SAS令牌,同样可以设置到9999年过期,且能访问存储账户下的Blob、文件等多种资源类型。

内容的提问来源于stack exchange,提问作者user21940304

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 08:07:15