如何在 .NET 5 隔离进程中使用 Azure Functions v3 时添加以前在启动.cs-->配置方法中的代码



我正在使用。net 5 dotnet隔离的新c#函数应用程序,其中示例仅显示Program.cs,没有Startup.cs类。我遇到了一个问题,我需要注册SyncFusion许可证,我通常在Startup.cs—>Configure方法中使用这一行;

Syncfusion.Licensing.SyncfusionLicenseProvider.RegisterLicense("...");

但是我不知道在没有Startup.cs文件的。net 5隔离进程函数的新方法中该在哪里添加这一行。

谁能提供一个例子,我将添加的东西,我通常会放在Startup.cs ->配置方法?

有没有类似于…的菊花链扩展方法

.ConfigureServices(services =>
{
...
...
...
}

…与HostBuilder在。net 5隔离进程版本的program.cs文件一起使用?

选项1

我将遵循现有模式,并在适当的项目中创建IServiceCollection的扩展方法,如下所示:
public static class ServiceCollectionExtensions
{
public static void AddLicense(this IServiceCollection services)
{
Syncfusion.Licensing.SyncfusionLicenseProvider.RegisterLicense("...");
}
}

然后,在Function项目的program.cs文件中,您可以这样调用它:

static Task Main(string args[])
{
var hostBuilder = new HostBuilder()
...
.ConfigureServices(services => 
{
services.AddLicense();
});
}

选项2

现在,您可能需要更多的信息来注册实际的许可证。假设它是一个序列号;硬编码可能不是一个好主意。相反,我们把它放在一个配置中(为了更好的安全性,它甚至可以链接到一个密钥库)。

首先,让我们定义我们的配置类:
public class LicenseConfiguration
{
// I chose a serial number by it could be something else.
public string SerialNumber { get; set;}
}

现在,您可以定义一个IHostedService,它将在每次函数启动时运行:

public class LicenseRegistrationService : IHostedService
{
private readonly LicenseConfiguration _licenseConfiguration;
public LicenseRegistrationService(IOptions<LicenseConfiguration> licenseConfiguration) 
{
_licenseConfiguration = licenseConfiguration.Value;
}

public Task StartAsync(CancellationToken cancellationToken)
{ 
Syncfusion.Licensing.SyncfusionLicenseProvider.RegisterLicense(_licenseConfiguration.SerialNumber);
return Task.CompletedTask;
}

public Task StopAsync(CancellationToken cancellationToken)
{ 
return Task.CompletedTask;
}
}

现在让我们在Program类中连接所有内容:

static Task Main(string args[])
{
var hostBuilder = new HostBuilder()
...
.ConfigureServices(services => 
{
// Register you hosted service 
services.AddHostedService<LicenseRegistrationService >();

// Bind your configuration parameters  
services.AddOptions<LicenseConfiguration>()
.Configure<IConfiguration>((settings, configuration) => 
{ 
configuration.GetSection(nameof(LicenseConfiguration)).Bind(settings); 
});
});
}

在您的local.settings.json文件中,您可以放入适当的配置来本地验证所有内容:

{
"IsEncrypted": false,
"Values": {
...
"LicenseConfiguration__SerialNumber": "this-is-your-serial-number"
}
}

相关内容

最新更新