Azure functions / Durable Functions / global.asax



我正在尝试移动一个我已经工作了几年的Web应用程序。 我在global.asax中加载了一个配置列表以供将来访问。 我看到 global.asax 在持久函数中没有等效项,所以这就是让我开始研究持久函数的原因;但我不确定这是处理负载的最佳方式。 在我当前的环境中,可能会加载超过 10,000 条记录,因此动态加载它们也不会很好地工作。

这是我的global.asax配置的示例;并不是说它真的很重要...:

if (query.Count() > 0)
{
foreach (var item in query)
{
bool bActive = false;
bool.TryParse(item.IsActive.ToString(), out bActive);
if (item.ProviderName != string.Empty && bActive)
{
try
{
bool bEncrypt = false;
bool bSign = false;
// yes, I know these are bools anyway; this is to catch possible nulls...
bool.TryParse(item.Sign.ToString(), out bSign);
bool.TryParse(item.Encrypt.ToString(), out bEncrypt);
SConfiguration.AddServiceProvider(
new ServiceProvider()
{
Name = item.PartnerEntity,
NameIDFormat = item.NameFormat,
SignSAMLResponse = bSign,
Sign = bSign,
Encrypt = bEncrypt
});
}
}

所以这个配置需要通过多个http sendoffs(它是SAML(来持久化。

有没有办法预加载配置并使其可用于所有未来的 Azure 函数调用?

您可以将依赖关系注入与服务生命周期单例一起使用:

using System;
using Microsoft.Azure.Functions.Extensions.DependencyInjection;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Http;
using Microsoft.Extensions.Logging;
[assembly: FunctionsStartup(typeof(MyNamespace.Startup))]
namespace MyNamespace
{
public class Startup : FunctionsStartup
{
public override void Configure(IFunctionsHostBuilder builder)
{
builder.Services.AddSingleton<ILoggerProvider, MyLoggerProvider>();
}
}
}

来源: https://learn.microsoft.com/bs-cyrl-ba/azure/azure-functions/functions-dotnet-dependency-injection

最新更新