カスタムOutputCacheProviderを実装しました
public class MongoDBCacheProvider : OutputCacheProvider, IDisposable { ... }
cacheproviderは次のように登録されます。
<outputCache defaultProvider="MongoDBCacheProvider" enableOutputCache="true" >
<providers>
<add name="MongoDBCacheProvider" type="Mynamespace.Core.Caching.MongoDBCacheProvider, Mynamespace.Core" />
</providers>
</outputCache>
コンストラクターにいくつかの引数を渡す必要があります。Ninjectを使用してキャッシュプロバイダーをバインドしたいと思います。
this.Bind<System.Web.Caching.OutputCacheProvider>()
.To<Core.Caching.MongoDBCacheProvider>()
.WithConstructorArgument("databaseName", dbName);
より多くの引数を渡す必要がありますが、これは単なる例です。どういうわけかその文字列をそこに取得するための簡単な解決策が存在すると確信していますが、他のすべてのクラスで使用するのと同じようにNinjectを使用したいと思います。
これは、「このオブジェクトにパラメーターなしのコンストラクターが定義されていません」というメッセージで失敗します。次のバインディングも機能しません。
this.Bind<Core.Caching.MongoDBCacheProvider>().ToSelf()
.InSingletonScope()
.WithConstructorArgument("databaseName", dbName);
エラーが発生する前にバインディングが実行されることを確認しました。ASP .NETは、どういうわけかninjectバインディングをバイパスします。それのために工場を接続する方法もないようです。
派生したOutputCacheProviderにコンストラクター引数を渡す方法を知っている人はいますか?
ありがとうございました。