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

.NET6 Azure Function v4访问DbContext触发MissingMethodException错误

问题分析与解决方案

核心问题定位

System.MissingMethodException 本质是依赖版本不兼容:项目基于.NET6开发,但共享类库SharedStartup.csproj中引用了Microsoft.Extensions.DependencyInjection和Microsoft.Extensions.DependencyInjection.Abstractions的7.0.0版本。这两个包的7.x版本属于.NET7生态,与.NET6底层依赖(如Microsoft.Extensions.Caching.Memory)存在构造函数签名差异,导致EF Core初始化时找不到预期的MemoryCache构造方法。

分步解决方案

1. 统一共享类库的依赖版本

修改SharedStartup.csproj中的依赖版本,将Microsoft.Extensions.DependencyInjection和Microsoft.Extensions.DependencyInjection.Abstractions降级到.NET6兼容的6.x版本(建议与其他扩展包版本保持一致):

<PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="6.0.1" />
<PackageReference Include="Microsoft.Extensions.DependencyInjection.Abstractions" Version="6.0.0" />

2. 清理并重建项目

  • 删除所有项目的bin和obj目录
  • 在解决方案根目录执行以下命令:
    dotnet clean
    dotnet restore
    dotnet build
    

3. 优化DbContext使用方式(可选,更符合DI规范)

已注册DbContextFactory,但Repository中手动new MyDbContext的方式未利用DI容器的生命周期管理,建议改为通过工厂获取实例:

private readonly IDbContextFactory<MyDbContext> _contextFactory;
private readonly ICurrentUser _currentUser;
private readonly IDbConnectionService _dbConnectionService;

public MyRepository(
    IRepositoryDependencyProvider repositoryDependencyProvider,
    IDbContextFactory<MyDbContext> contextFactory,
    ICurrentUser currentUser,
    IDbConnectionService dbConnectionService) 
    : base(repositoryDependencyProvider)
{
    _contextFactory = contextFactory;
    _currentUser = currentUser;
    _dbConnectionService = dbConnectionService;
}

public MobileInstallation Find(Guid installationID)
{
    using var context = _contextFactory.CreateDbContext();
    var userID = _currentUser.GetUserID();
    return context.MobileInstallations.Where(r => r.InstallationID == installationID && r.UserID == userID).FirstOrDefault(); 
}

同时需调整MyDbContext的构造逻辑,确保能通过工厂正确初始化分片信息。

额外检查点

  • 确认所有项目的TargetFramework均为net6.0,无跨版本混用
  • 检查所有Microsoft.Extensions.*系列包版本,统一为6.x,避免版本冲突
  • 确保Microsoft.NET.Sdk.Functions版本(当前4.2.0)与.NET6、Azure Functions v4兼容

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 00:15:09