2017-09-13 4 views
2

最新のアップデートを含むVisual Studio 2017では、空白の関数テンプレートのために、webjobsテンプレートのprogram.csのように初期化できる場所が必要です。VS2017のAzure関数プロジェクトでのアプリケーションの初期化15.3.4?

サービスを初期化するときに新しい名前空間マネージャーを使用して新しいサブスクリプションを作成しようとしているため、1つのサービスバストピックを聞くことができます。

これを行う方法はありますか?はいの場合はどうですか?

答えて

0

晴れ機能テンプレートの場合、webjobsテンプレートのprogram.csのように初期化できる場所が必要です。

私が知る限り、Azure関数はこれを適切にサポートしていません。あなたはa similar questionを見つけることができます。

質問:

私はC#の機能を持っており、任意の初期化のポイントがあるかどうかを知りたいです。私は初期化を必要とする依存性注入コンテナを持っています そしてそれをどこで行うか知りたいです。

マシューの応答

我々は今、この権利のために良い話を持っていません。この問題については、公開された問題 hereをレポでご覧ください。

0

この機能がトリガされるサブスクリプションを作成する場合は、手動で行う必要はありません。機能Appはデプロイメント時のバインディングに基づいてサブスクリプションを作成します。他のシナリオについては

(例えばタイマートリガ機能)、あなたは静的コンストラクタで初期化を行うことができます。

public static class MyFunction1 
{ 
    static MyFunction1() 
    { 
     var namespaceManager = NamespaceManager.CreateFromConnectionString(connString); 
     if (!namespaceManager.SubscriptionExists("topic1", "subscription1")) 
     { 
      namespaceManager.CreateSubscription("topic1", "subscription1"); 
     } 
    } 

    [FunctionName("MyFunction1")] 
    public static void Run(
    // ... 
} 

静的コンストラクタは、最初の関数呼び出しの時に実行されます。

+0

ありがとうございます!しかし、キューにメッセージがあり、コンストラクターが呼び出されない限り、上記の関数はトリガーされません。上記の場合、静的コンストラクタでキューを作成します。したがって、関数がトリガーされる前にキューを作成したいので、上記は機能しません。 – Vicky

+0

@Vicky Ah、あなたは機能するサブスクリプションを作成しようとしていますか?関数を配置すると、関数Appによって作成されます。 – Mikhail

+0

はい。したがって、関数appがデプロイするときにキュー/サブスクリプションが作成されます。次のコードは、サービスバスへのメッセージを聞く前に私が話していることです。 var namespaceManager = NamespaceManager.CreateFromConnectionString(connString);もし (!namespaceManager.QueueExists( "キュー")){ namespaceManager.CreateQueue( "新QueueDescription(" キュー "));} 。。 – Vicky

関連する問題