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

Azure DevOps构建流水线报TimeZoneCalc.dll访问被拒问题咨询

报错信息:One or more errors occurred. (Access to the path 'c:\Agents\Agent-02_work\1\s\out\Release\bin\TimeZoneCalc.dll' is denied.

错误原因

该报错本质是构建进程访问目标dll文件时被Windows系统拦截,常见触发场景如下:

  • 上一次流水线运行异常崩溃/被强制取消,关联进程(dotnet构建进程、测试宿主testhost、加载了该dll的IIS工作进程w3wp等)未正常退出,持续锁定TimeZoneCalc.dll文件,新构建任务执行覆盖写入操作时触发访问拒绝
  • 该代理为自托管部署模式,代理服务的运行账号对工作目录c:\Agents\Agent-02\_work\及下属子目录、文件缺少读写、修改、删除的完整权限
  • 目标路径下的对应dll被标记为只读属性,或被服务器上安装的杀毒软件、终端安全管控软件锁定做实时扫描,阻止了构建进程的写入操作
  • 代理池并发配置不合理,同个代理同一时间被调度执行多个流水线任务,多进程并发读写同一份工作目录下的同名dll文件,触发文件锁冲突
排查&解决方案

按优先级依次操作,绝大多数场景下前2步即可解决问题:

  1. 登录部署Agent-02代理的Windows服务器,打开任务管理器结束所有残留的dotnet.exe、testhost.exe、w3wp.exe(若该目录下文件被本机IIS站点加载)进程,手动删除c:\Agents\Agent-02\_work\1\s\out整个输出目录后重新触发流水线
  2. 校验代理服务权限:在服务器服务列表找到Azure Pipelines Agent对应服务,查看其配置的登录运行身份,给该账号授予c:\Agents\Agent-02\根目录的完全控制权限,将权限继承规则应用到所有子文件、子文件夹
  3. 给流水线添加前置强制清理步骤,每次构建启动前自动清空旧的输出目录,避免历史残留文件干扰:
    可新增一个PowerShell任务执行以下清理逻辑:
    $outputPath = "$(Build.SourcesDirectory)/out"
    if (Test-Path $outputPath) {
        Remove-Item $outputPath -Recurse -Force -ErrorAction SilentlyContinue
    }
    
    如果使用官方的dotnet build/dotnet publish任务,可直接在任务配置面板勾选「清理目标目录」选项,任务执行前会自动清空旧输出文件
  4. 调整服务器安全软件规则,将代理工作目录c:\Agents\Agent-02\_work加入杀毒、EDR终端防护的扫描排除列表,避免构建过程中生成的dll文件被实时扫描锁定
  5. 检查代理池的并发作业配置,确保单个代理同一时间只会分配执行一个流水线任务,避免同目录下的文件并发读写冲突;可给代理服务器配置每周固定时间重启代理服务的计划任务,自动清理长期运行积累的残留进程锁

内容的提问来源于stack exchange,提问作者Naveen Kumar N

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 22:46:03