sea*_*ght 6 c# azure azure-functions
我有一个Azure功能应用程序(使用更新的.net class library方法),我使用静态构造函数初始化,以便共享生成的资源.
官方文档建议像HttpClient 在web api中共享资源.
Azure函数C#脚本开发人员参考文档底部的讨论提到放置HttpClient一个静态变量以防止对每个请求进行重新实例化,因为它是线程安全的.
我想知道两件事.
静态构造函数是否可以初始化所有请求使用的昂贵的"设置"资源?
如果这种方法没问题,如果这些资源的初始化失败,如何在静态构造函数中配置错误日志记录?
这是我的班级定义
public static class HttpSubmissionTrigger
{
private static readonly SendGridClient sendGridClient;
private static readonly Func<IDictionary<string, object>, string> template;
private static readonly EmailAddress senderEmail;
private static readonly string emailTitle;
private static readonly HttpResponseMessage errorResponse;
static HttpSubmissionTrigger()
{
// ... initialization of above static members here
}
public static async Task<HttpResponseMessage> Run(...)
{
// ... use static members here to send emails, respond to client
}
}
Run Code Online (Sandbox Code Playgroud)
我Run使用DI的方法在我的方法中执行错误记录TraceWriter,这很好.我可以使用它来查看Azure门户控制台中的函数错误,但静态构造函数不能有参数,因此该方法不适用于资源初始化.
Azure函数文档中还有另一个对此问题的引用,但响应是在此处提出问题.
您不仅限于使用静态构造函数来执行共享资源的初始化逻辑。
几种可能的方法之一是让一个类为您管理这些资源,在调用函数时执行静态初始化,传递记录器和其他相关信息,确保进行适当的检查以避免双重初始化。
我们即将发布的函数过滤器功能也将有助于解决这些场景: https: //github.com/Azure/azure-webjobs-sdk/wiki/Function-Filters
| 归档时间: |
|
| 查看次数: |
1810 次 |
| 最近记录: |