选项 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"
}
}