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

Azure Function 3升级至4报错:外部启动类服务配置失败

Azure Function v3升级v4后启动报错:找不到Microsoft.Extensions.Identity.Core 7.0.0

问题详情

升级Azure Function从v3到v4后,启动时抛出以下错误:

AZFD0005 Diagnostic event Error code AZFD0005 Level Error Message
Error configuring services in an external startup class. Details
Microsoft.Azure.WebJobs.Script.ExternalStartupException : Error configuring services in an external startup class. --->
System.IO.FileNotFoundException : Could not load file or assembly 'Microsoft.Extensions.Identity.Core, Version=7.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60'. The system cannot find the file specified.
at SkyNav.API.Extensions.RegisterServices.AddCustomServices(IServiceCollection services) at /Users/mrogers/_AzureDevOps/SkyNavAPI/src/SkyNav.API/Extensions/RegisterServices.cs : 87
...(省略后续调用栈)

项目核心配置:

  • 目标框架:.NET 6.0
  • AzureFunctionsVersion:v4
  • 直接依赖的Microsoft.Extensions.Identity.Core版本为6.0.21,未发现直接或间接依赖7.0.0版本。

项目csproj关键片段:

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <TargetFramework>net6.0</TargetFramework>
    <AzureFunctionsVersion>v4</AzureFunctionsVersion>
  </PropertyGroup>
  <ItemGroup>
    <!-- 其他依赖项 -->
    <PackageReference Include="Microsoft.Extensions.Identity.Core" Version="6.0.21" />
    <PackageReference Include="Microsoft.NET.Sdk.Functions" Version="4.1.1" />
  </ItemGroup>
  <ItemGroup>
    <ProjectReference Include="..\SkyNav.Core\SkyNav.Core.csproj" />
  </ItemGroup>
</Project>

错误触发点对应代码(RegisterServices.AddCustomServices第87行):

services.AddScoped(typeof(IPasswordHasher<User>), typeof(PasswordHasher<>));

解决方案

1. 检查SkyNav.Core项目的依赖

由于项目引用了SkyNav.Core,需排查该项目的NuGet依赖:

  • 确认是否存在对Microsoft.Extensions.Identity.Core7.0.0版本的直接/间接引用
  • 检查该项目是否有程序集绑定重定向配置,强制指向7.0.0版本

2. 添加程序集绑定重定向

在项目根目录创建app.config文件,配置绑定规则将7.0.0版本指向已安装的6.0.21版本:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="Microsoft.Extensions.Identity.Core" publicKeyToken="adb9793829ddae60" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-7.0.0.0" newVersion="6.0.21.0" />
      </dependentAssembly>
    </assemblyBinding>
  </runtime>
</configuration>

3. 更新Microsoft.NET.Sdk.Functions版本

当前使用的4.1.1版本可能存在兼容性问题,升级到.NET 6兼容的最新稳定版本(如4.2.0及以上):

dotnet add package Microsoft.NET.Sdk.Functions --version 4.2.0

4. 修正PasswordHasher注册方式

泛型类型PasswordHasher<>的写法可能导致程序集解析异常,改为具体的泛型类型:

services.AddScoped(typeof(IPasswordHasher<User>), typeof(PasswordHasher<User>));

5. 清理重建项目

  • 删除项目的bin和obj文件夹
  • 清除NuGet缓存:
dotnet nuget locals all --clear
  • 重新还原依赖并构建:
dotnet restore
dotnet build

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 07:25:04