MVC WebサイトにカスタムViewEngineを注入したいとします。これは私が何をすべきかです:InRequestScopeプロバイダ(カスタムViewEngine用)は、appstartで一度しか呼び出されません
private static IKernel CreateKernel()
{
kernel.Bind<IViewEngine>().ToProvider(new RazorViewEngineProvider()).InRequestScope();
}
これは私のプロバイダです:
public class RazorViewEngineProvider : Provider<RazorViewEngine>
{
protected override RazorViewEngine CreateInstance(IContext context)
{
return new RazorViewEngine();
}
}
問題がある:私が初めてWebサイトにアクセスしたときに私のプロバイダは一度だけ呼ばれます。次回、私のプロバイダは何とかキャッシュに残っています。それは私が望むものではありません。
すべてのリクエストでプロバイダを実行したい。私はそれをInRequestScope()で行うことができると考えましたが、それは何の違いもありません。誰が何が起こっているのか分かっていますか?むしろ、その後
はい、そのような登録が動作します。しかし、それは私が欲しいものではありません。 ViewEngineをリクエストごとに更新したい。私は、global_asaxメソッドを見てきました。そのうちのBeginRequestが最も関連性が高いと思われます。しかし、私はNinjectの依存関係を使いたいと思います.Global_asaxからNinject Kernelにアクセスすることはできません。 – user369117
私はあなたの問題を再現しました。実際、 'CreateInstance'メソッドは一度だけ呼び出されます。これについて私は恐れているとは分かりません。 –