我已经实现了一个自定义 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 吗?
谢谢你。