可能かどうかはわかりませんが、WCFサービスが開始されたらすぐに関数を実行して初期キャッシュデータを生成したいと思います。キャッシュの実装方法については今は心配していません。私の質問は、サービスの開始時に関数を実行することについて厳密に説明しています。サービスはRESTfulになります。
このサービスは最終的にIISでホストされ、.NetFramework4.5を使用します。
最も簡単な方法はApp_Code
、WCFプロジェクトルートの下にフォルダーを作成し、次のようにクラスを作成することです(これを呼び出しますInitializer
が、重要ではありません。重要な部分はメソッド名です)。
public class Initializer
{
public static void AppInitialize()
{
// This will get called on startup
}
}
詳細についてAppInitialize
は、こちらをご覧ください。
@KirkWollが提案したものは機能しますが、IISにいて、それがApp_Codeの下の唯一のAppInitialize静的メソッドである場合に限ります。サービスごとに初期化を行う場合、別の AppInitialize メソッドがある場合、または IIS を使用していない場合は、次の他のオプションがあります。
ServiceHost.Open()
、そこで初期化できます)。カスタム ファクトリの例を以下に示します。
public class MyFactory : ServiceHostFactory
{
protected override ServiceHost CreateServiceHost(Type serviceType, Uri[] baseAddresses)
{
ServiceHost host = base.CreateServiceHost(serviceType, baseAddresses);
host.Opening += new EventHandler(host_Opening);
return host;
}
void host_Opening(object sender, EventArgs e)
{
// do initialization here
}
}
}