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

.NET开发Azure File Share清理功能时ShareFileItem属性全为null如何处理

问题原因

你调用ShareDirectoryClient.GetFilesAndDirectories()方法时,默认仅返回文件/目录的名称、是否为目录这两类基础信息,Properties属性默认不会填充,所以你访问的时候全为null。

解决方案

提供两种可行方案,按需选择:

  • 方案1:遍历到单个文件时单独拉取属性
    不需要修改遍历逻辑,只需要在处理文件的分支中,先获取对应文件的客户端实例,再主动拉取属性即可,修改后的代码片段如下:
else
{
    // 获取当前文件的客户端
    ShareFileClient fileClient = dir.GetFileClient(item.Name);
    // 主动拉取文件属性
    ShareFileProperties properties = fileClient.GetProperties();
    log.LogInformation($"time: {properties.LastModified.ToString()}");
    // 后续的留存时间判断直接使用properties里的属性即可
}

这个方案兼容性好,不需要调整遍历逻辑,适合文件数量不多的场景。

  • 方案2:拉取列表时就带上属性参数
    如果你用的Azure.Storage.Files.SharesNuget包版本≥12.0.0,可以直接在调用列表方法时指定要拉取所有属性,无需逐个请求,修改遍历的代码行即可:
// 传入traits参数指定返回所有属性
foreach (ShareFileItem item in dir.GetFilesAndDirectories(traits: ShareFileTraits.All))

修改后你原来的item.Properties.LastModified就可以正常取值,不需要额外的请求,适合文件数量较多的场景。

注意事项
  • 请确保你使用的连接字符串对应的存储账号身份,有文件属性的读取权限
  • 如果采用方案2,请先核对Nuget包版本,低版本SDK不支持traits参数

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 07:24:04