Azure関数のアプリケーション(新しい.net class library
アプローチを使用)を使用して、生成されたリソースを共有するために静的なコンストラクタで初期化します。Azure関数静的コンストラクタエラーログ
公式ドキュメントでは、HttpClient
in a web apiのようなリソースを共有することを推奨しています。
Azure Functions C# script developer referenceのドキュメントの最後の説明では、スレッドセーフであるため、各リクエストの再インスタンス化を防ぐために、HttpClient
を静的変数に配置しています。
私は2つのことが不思議です。
すべてのリクエストで使用される高価な「セットアップ」リソースを初期化するための静的コンストラクタは問題ありませんか?
これらのリソースの初期化が失敗した場合、スタティックコンストラクタでエラーロギングをどのように設定する必要がありますか?
は、ここで私は正常に動作TraceWriter
のDIを使用して、私のRun
方法でエラーログを実行する私のクラス定義
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
}
}
です。これを使用して関数のAzureポータルコンソールのエラーを表示できますが、静的コンストラクタにはパラメータを設定できないため、リソースの初期化ではこのアプローチは機能しません。
Azure function docsにこの質問の別の参照がありますが、回答はここで質問することでした。
ので、フィルタは現在webjobsのために利用可能であり、すぐに機能のために利用できるようになりますか?私はAzure関数で当てはまらないものをグローバルに宣言するオプションに気づいた(右?)。その物語は洗練されていますか?これは、認証層で複数の機能をカバーする優れたアプローチです。 – seangwright