azure - Azure Function v3 - 在启动中添加标识时“无法访问 Azure Functions 运行时”
问题描述
我有一个Azure Function (v3)
必须与数据库以及用户管理交互的东西。它具有一个依赖项,该项目还包含 DAL 以及所有上下文配置。在函数的启动中,我将依赖项添加到DbContext
Azure 并将其部署在 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 容器。
可能是什么问题呢?
解决方案
添加身份时,您还添加了 AspNetCore 身份验证依赖项。出于某种原因,Functions host 检查您的应用程序中是否存在这些依赖项,并阻止 Host 模块添加允许门户访问项目中的功能的内置身份验证方案。
如果您仍想在启动时加载身份组件,我鼓励您查看https://www.nuget.org/packages/DarkLoop.Azure.Functions.Authorize
这是一篇描述其工作原理的帖子:https ://blog.darkloop.com/post/functionauthorize-for-azure-functions-v3
你可以打电话
builder.AddAuthentication();
builder.AddAuthorization();
// or
builder.Services.AddFunctionsAuthentication();
builder.Services.AddFunctionsAuthorization();
此调用强制加载内置身份验证功能,并允许您添加更多身份验证依赖项和方案。
通话结束后,您可以拨打电话AddDbContext<...
并AddIdentity<...
Azure 门户应该能够获得它需要的关于你的函数的所有信息。
推荐阅读
- uwp - 配置 NavigationView 以显示纯文本菜单,而不显示纯图标栏
- c# - 如何使用 Selenium 填充表格单元格?
- r - 如何在R的同一列中的两个日期之间生成日期序列
- php - 寻找 can_access_route 方法
- java - maven-bundle-plugin 因“无效的类文件 module-info.class”而失败
- php - 计算每 2 行的时间戳之间的时间
- java - 如何在spring boot中创建动态规则引擎?
- java - 为硒设置代理?
- java - 文件大小的递归平均值[JAVA]
- javascript - 有什么方法可以检查 Javascript 变量的内存地址吗?