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

AzureAdTokenCredentials依赖ActiveDirectory 3.13.1.846引发文件未找到异常

解决Azure Function中创建CloudMediaContext时的ADAL版本冲突问题

老兄,我完全懂这种“明明装了新版本却报老版本找不到”的崩溃感——之前在做Media Services和Azure Functions的整合时,我也踩过一模一样的坑!咱们一步步来解决:

问题根源

你遇到的FileNotFoundException本质是依赖版本冲突:Microsoft.WindowsAzure.MediaServices.Client(也就是创建CloudMediaContext需要的包)内部可能硬依赖了旧版本的ADAL库(3.13.1.846),而你手动安装的3.19.4版本和它的依赖要求不匹配,导致程序集绑定失败。

具体解决办法

1. 先检查NuGet依赖关系

打开你的项目的NuGet包管理器,找到Microsoft.WindowsAzure.MediaServices.Client,查看它的依赖项列表,确认它要求的ADAL版本范围。

  • 如果它明确要求≤3.13.x,那最简单的办法就是把你安装的Microsoft.IdentityModel.Clients.ActiveDirectory降级到符合要求的版本(比如3.13.1),这样就能直接匹配依赖,避免冲突。

2. 添加程序集绑定重定向(强制用新版本)

如果不想降级ADAL,那就用绑定重定向告诉程序“不管找哪个旧版本,都用我装的3.19.4”。Azure Functions的配置有点特殊,步骤如下:

  • 编辑你的项目文件(.csproj),添加以下配置:
    <PropertyGroup>
      <AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
      <GenerateBindingRedirectsOutputType>true</GenerateBindingRedirectsOutputType>
    </PropertyGroup>
    
  • 在项目根目录创建redirects.json文件,内容如下:
    {
      "assemblyRedirects": [
        {
          "name": "Microsoft.IdentityModel.Clients.ActiveDirectory",
          "publicKeyToken": "31bf3856ad364e35",
          "oldVersion": "0.0.0.0-3.19.4.0",
          "newVersion": "3.19.4.0"
        }
      ]
    }
    
  • 回到.csproj,添加对这个文件的引用,确保部署时能带上:
    <ItemGroup>
      <None Update="redirects.json">
        <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
      </None>
    </ItemGroup>
    

3. 清理重建,确保依赖干净

  • 右键项目 → 清理解决方案
  • 手动删除项目根目录下的bin和obj文件夹
  • 运行dotnet restore恢复NuGet包,再重新构建项目
  • 本地运行Azure Functions时,确保调试环境加载的是正确版本的dll

4. 云端部署后的检查

如果是部署到Azure云端的Functions,登录Kudu控制台(https://<你的函数名>.scm.azurewebsites.net),进入site/wwwroot/bin文件夹,查看Microsoft.IdentityModel.Clients.ActiveDirectory.dll的版本是否是3.19.4。如果不是,重新部署时勾选“包含所有依赖项”,或者手动上传正确的dll。

额外建议:考虑迁移到MSAL

ADAL(Microsoft.IdentityModel.Clients.ActiveDirectory)已经被微软弃用了,Media Services的新版本也推荐使用MSAL(Microsoft.Identity.Client)来获取令牌。如果有时间,建议重构代码:用ClientSecretCredential或者InteractiveBrowserCredential获取令牌,再传入CloudMediaContext,这样能彻底避免旧版本ADAL的依赖问题。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 11:09:25