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
相关产品推荐
相关产品推荐

