【发布时间】:2021-09-03 01:18:58
【问题描述】:
我有一个Azure Function (v3),它必须与数据库以及用户管理进行交互。
它具有一个依赖项,该项目还包含 DAL 以及所有上下文配置。
在函数的启动中,我将依赖项添加到 DbContext 并将其部署在 Azure 上,我没有问题。
除了DbContext,我还添加Identity 并重新部署时,门户网站显示“Azure Functions 运行时无法访问”。
这是Startup.cs的函数:
[assembly: FunctionsStartup(typeof(Directio.PeopleSee.OrderSynchronizer.Startup))]
namespace Directio.PeopleSee.OrderSynchronizer
{
public class Startup : FunctionsStartup
{
public override void Configure(IFunctionsHostBuilder builder)
{
builder.Services.AddHttpClient();
builder.Services.AddDbContext<DBContext>(options1 =>
{
options1.UseLazyLoadingProxies(false);
options1.UseSqlServer(Environment.GetEnvironmentVariable("DBConnectionString"), builder =>
{
builder.CommandTimeout(10);
}
);
})
.AddIdentity<AspNetUser, AspNetRole>(opt =>
{
opt.Password.RequireDigit = false;
opt.Password.RequireLowercase = false;
opt.Password.RequireNonAlphanumeric = false;
opt.Password.RequireUppercase = false;
opt.Password.RequiredLength = 0;
opt.Password.RequiredUniqueChars = 0;
opt.User.RequireUniqueEmail = false;
opt.SignIn.RequireConfirmedEmail = false;
opt.SignIn.RequireConfirmedAccount = false;
opt.SignIn.RequireConfirmedPhoneNumber = false;
})
.AddEntityFrameworkStores<DBContext>()
.AddDefaultTokenProviders();
builder.Services.AddOptions<FunctionAppSettings>().Configure<IConfiguration>((settings, configuration) => configuration.GetSection("FunctionAppSettings").Bind(settings));
builder.Services.AddScoped<IUnitOfWork, UnitOfWork>();
builder.Services.AddScoped<IUserService, UserServiceImpl>();
builder.Services.AddScoped<IRoleService, RoleServiceImpl>();
builder.Services.AddScoped<ISubscribersService, SubscriberServiceImpl>();
builder.Services.AddScoped<IOrdersService, OrdersService>();
}
}
}
所有服务注册都来自依赖项所链接的项目。
该函数以netcore3.1为框架,部署在Azure Func App中,按量付费,Windows服务器,不是docker容器。
可能是什么问题?
【问题讨论】:
-
你有解决办法吗?
-
@Sachin 我“解决了”它在启动时只添加没有身份的 EF 并使用
IdentityFrameworkDBContext类方法处理用户。您必须遵循一些规则才能正确填写您的IdentityUser属性。这里有一些例子:codeshare.io/9OjEE4 -
非常感谢..我也在尝试类似的方法,所以现在有信心可以实现:)再次感谢..
-
我想分享另一个提示,即使它与您的具体问题无关。由于这是当您搜索“Azure Functions 运行时无法访问”时 SO 上的第一个结果,它可能对其他人有所帮助:确保您的函数名称(即通过 FunctionName Annotation)中没有任何空格。
标签: azure asp.net-core azure-functions