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

Azure Function v4 + .NET6 添加Identity后运行时不可达求助

Azure Functions v4 添加Identity配置后运行时无法访问问题排查

我有一个需与数据库交互并实现用户管理的Azure Function v4项目,依赖包含DAL及上下文配置的项目。仅注册DbContext部署到Azure无问题,但添加Identity相关配置后,Azure门户提示“Azure Functions runtime is unreachable”。

项目基于.NET6,部署在Azure函数应用的按需付费计划、Windows服务器环境,非Docker容器。移除AddIdentity代码块后运行时恢复正常,但UserManager和SignInManager无法通过依赖注入初始化。

以下是Startup.cs配置代码及.csproj文件内容,请求协助排查该问题:

Startup.cs代码

public class Startup : FunctionsStartup
    {
        public override void Configure(IFunctionsHostBuilder builder)
        {
            builder.Services.AddLogging();
            var configBuilder = new ConfigurationBuilder();
            ConfigSetup(configBuilder);

            var configuration = builder.GetContext().Configuration;
            var rootConfig = configuration.Get<RootConfigSection>();
            builder.Services.AddSingleton(rootConfig);

            //builder.Services.AddInfrastructure(configuration);

            // -- configure EF Core
            builder.Services.AddDbContext<ApplicationDbContext>(options =>
                options.UseSqlServer(
                    configuration.GetConnectionString("DefaultConnection"),
                    b => b.MigrationsAssembly(typeof(ApplicationDbContext).Assembly.FullName)
                    ), ServiceLifetime.Transient);


            builder.Services.AddTransient<IApplicationDbContext>(provider => provider.GetService<ApplicationDbContext>());


            builder.Services.AddIdentity<ApplicationUser, IdentityRole>(options =>
            {
                options.Password.RequiredLength = 8;
                options.Password.RequireDigit = true;
                options.Password.RequireLowercase = true;
                options.Password.RequireUppercase = true;

                options.Lockout.AllowedForNewUsers = true;
                options.Lockout.MaxFailedAccessAttempts = 4;
                options.Lockout.DefaultLockoutTimeSpan = TimeSpan.FromMinutes(5);

                // User settings.
                options.User.RequireUniqueEmail = true;
            })
            .AddEntityFrameworkStores<ApplicationDbContext>()
            .AddDefaultTokenProviders();

            //var rootConfig = context.Configuration.Get<RootConfigSection>();
            //services.AddSingleton(rootConfig);

            builder.Services.AddTransient<IApplicationService, ApplicationService>();
            builder.Services.AddTransient<IClientService, ClientService>();
            builder.Services.AddTransient<IEmailInvitationService, EmailInvitationService>();
            builder.Services.AddTransient<IEmailService, EmailService>();
            builder.Services.AddTransient<IPeopleService, PeopleService>();
            builder.Services.AddTransient<IStorageService, StorageService>();
            builder.Services.AddTransient<IJobRequestsService, JobRequestsService>();
            builder.Services.AddTransient<IStorageService, StorageService>();
            builder.Services.AddTransient<INotificationService, NotificationService>();
            builder.Services.AddTransient<ITeamMembersService, TeamMembersService>();
            builder.Services.AddTransient<IUsersService, UsersService>();
            builder.Services.AddTransient<IZohoRepository, ZohoRepository>();
            builder.Services.AddTransient<ILeaveApprovalRepository, LeaveApprovalRepository>();
            builder.Services.AddTransient<ILeaveApprovalService, LeaveApprovalService>();
            builder.Services.AddTransient<ZohoClientService, ZohoClientService>();
            

            builder.Services.AddTransient<IAuthTokenHandler, AuthTokenHandler>();

          
        }

        static void ConfigSetup(IConfigurationBuilder builder)
        {
            builder.SetBasePath(Directory.GetCurrentDirectory())
                    .AddJsonFile("appsettings.json", optional: false, reloadOnChange: true)
                    .AddEnvironmentVariables();
        }
}

.csproj文件内容

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <TargetFramework>net6.0</TargetFramework>
    <AzureFunctionsVersion>v4</AzureFunctionsVersion>
    <_FunctionsSkipCleanOutput>true</_FunctionsSkipCleanOutput>
  </PropertyGroup>
  <ItemGroup>
    <Compile Remove="People.cs" />
  </ItemGroup>
  <ItemGroup>
    <PackageReference Include="Azure.Storage.Blobs" Version="12.14.1" />
    <PackageReference Include="Microsoft.Azure.Functions.Extensions" Version="1.1.0" />
    <PackageReference Include="Microsoft.NET.Sdk.Functions" Version="4.1.1" />
    <PackageReference Include="Microsoft.AspNetCore.Identity.EntityFrameworkCore" Version="6.0.3" />
    <PackageReference Include="Microsoft.EntityFrameworkCore" Version="6.0.3" />
    <PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="6.0.3" />
    <PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="6.0.3" />
    <PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="6.0.3" />
    <PackageReference Include="Microsoft.Azure.WebJobs.Extensions.OpenApi" Version="1.4.0" />
    <PackageReference Include="Newtonsoft.Json" Version="13.0.1" />
  </ItemGroup>
  <ItemGroup>
    <ProjectReference Include="..\TMF.BL\TMF.BL.csproj" />
    <ProjectReference Include="..\TMF.EFCore\TMF.EFCore.csproj" />
    <ProjectReference Include="..\Authentication\Authentication.csproj" />
  </ItemGroup>
    <ItemGroup>
        <None Update="host.json">
            <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
        </None>
        <None Update="appsettings.json">
            <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
        </None>
        <None Update="local.settings.json">
            <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
            <CopyToPublishDirectory>Never</CopyToPublishDirectory>
        </None>
    </ItemGroup>
</Project>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 13:53:17