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

部署Azure Function App后CosmosDB SDK出现System.IO.FileNotFoundException求助

解决Azure Function部署后找不到CosmosDB SDK的问题

排查与修复步骤:

  • 确认部署包包含SDK文件
    本地执行发布后,检查输出目录(如bin\Release\net6.0\publish)是否存在Microsoft.Azure.Cosmos.dll。如果本地发布目录都没有该文件,需检查csproj中的依赖配置,确保使用PackageReference而非本地dll引用,示例配置:

    <PackageReference Include="Microsoft.Azure.Cosmos" Version="3.31.0" />
    

    同时确认发布命令(如func azure functionapp publish <app-name>)执行无报错,发布过程未遗漏依赖项。

  • 匹配Azure与本地的运行时版本
    CosmosDB SDK 3.31要求.NET 6及以上运行时,登录Azure Portal进入Function App配置页面,查看“运行时堆栈”设置,确保与本地开发使用的.NET版本完全一致(比如本地用.NET 6,Azure不能选.NET 3.1)。

  • 清理Azure端的旧部署缓存
    部署缓存可能导致旧文件未被覆盖,可通过两种方式清理:

    1. 使用命令行发布时添加--clean参数:func azure functionapp publish <app-name> --clean
    2. 进入Function App的“高级工具(Kudu)”,在Debug Console中打开site\wwwroot,手动删除旧的Microsoft.Azure.Cosmos.dll及相关文件后重新发布。
  • 检查Kudu部署日志
    进入Kudu的“Deployment Options”查看最新部署日志,排查是否存在“Failed to restore packages”或“Skipping assembly”类错误。若存在包恢复失败,可在Kudu控制台进入site\wwwroot目录,执行dotnet restore手动恢复依赖。

  • 处理依赖版本冲突
    本地执行dotnet list package --include-transitive,查看是否有其他NuGet包引用了旧版本的Microsoft.Azure.Cosmos。若存在冲突,可升级冲突包版本,或添加绑定重定向:

    • 对于In-process模式的Function,将重定向配置写入functionapp.config:
      <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
        <dependentAssembly>
          <assemblyIdentity name="Microsoft.Azure.Cosmos" publicKeyToken="31bf3856ad364e35" culture="neutral" />
          <bindingRedirect oldVersion="0.0.0.0-3.31.0" newVersion="3.31.0" />
        </dependentAssembly>
      </assemblyBinding>
      

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 17:31:04