如何在 .NET 5 隔离进程中使用 Azure Functions v3 时添加以前在 Startup.cs 中的代码->配置方法
Posted
技术标签:
【中文标题】如何在 .NET 5 隔离进程中使用 Azure Functions v3 时添加以前在 Startup.cs 中的代码->配置方法【英文标题】:How do I add code that was previously in Startup.cs -->Configure method when using Azure Functions v3 in .NET 5 isolated process 【发布时间】:2021-10-04 11:42:19 【问题描述】:我正在使用 .NET 5 dotnet-isolated 使用新的 C# 函数应用程序,其中示例仅显示 Program.cs 并且没有 Startup.cs 类。我有一个需要注册 SyncFusion 许可证的问题,我通常在 Startup.cs -->使用此行配置方法;
Syncfusion.Licensing.SyncfusionLicenseProvider.RegisterLicense("...");
但我不知道在没有 Startup.cs 文件的 .NET 5 隔离进程函数中的新方法中在哪里添加此行。
谁能提供一个示例,说明我通常会在 Startup.cs 中添加的内容 --> Configure 方法吗?
有没有一些类似菊花链的扩展方法...
.ConfigureServices(services =>
...
...
...
... 与 .NET 5 隔离进程版本的 program.cs 文件中的 HostBuilder 一起使用?
【问题讨论】:
【参考方案1】:选项 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"
【讨论】:
以上是关于如何在 .NET 5 隔离进程中使用 Azure Functions v3 时添加以前在 Startup.cs 中的代码->配置方法的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Visual Studio 中使用 .NET 5(独立进程)调试 Azure Functions?
.NET 5 支持 Azure Functions OpenAPI 扩展啦
如何为 Http 触发的 Azure 函数(隔离/进程外)生成 Api 客户端?
在 Azure Web 应用中显示 ASP.NET 5 错误页面