可能かどうかはわかりませんが、初期キャッシュデータを生成するためにWCFサービスが開始されたらすぐに関数を実行したいと思います。キャッシュの実装方法については今心配していません。私の質問は、サービスの開始時に関数を実行することです。サービスはRESTfulになります。
サービスは最終的にIISでホストされ、.Net Framework 4.5を使用しています
@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
}
}
}
最も簡単な方法は、App_Code
フォルダーをWCFプロジェクトルートの下に作成し、次のようにクラスを作成します(Initializer
と呼びますが重要ではありません。重要な部分はメソッド名です)。
public class Initializer
{
public static void AppInitialize()
{
// This will get called on startup
}
}
AppInitialize
に関する詳細情報は こちら にあります。