我正在使用。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"
}
}