ninject和企业库服务定位器相关的程序集

我正在将Microsoft.Practices.ServiceLocation程序集与ninject结合使用来帮助服务级别。 我将我的ninject内核注册到servicelocator提供者方法中:

var kernel = new StandardKernel();
//do bindings
var locator = new NinjectServiceLocator(kernel);
ServiceLocator.SetLocatorProvider(() => locator);

上面的代码在安装了企业库的机器上(通过msi可执行文件)都可以正常工作。 我不能在生产环境中运行安装程序,所以我在bin目录中本地安装了dll,希望这可以起作用。 但它不起作用。 我没有得到任何程序集没有发现异常,而是我得到一个对象引用没有设置异常调用:'在Microsoft.Practices.ServiceLocation.ServiceLocator.get_Current()'。

我已经阅读了几个地方,这个程序集没有任何依赖关系http://msdn.microsoft.com/en-us/library/ff664422%28v=PandP.50%29.aspx和本地DLL应该做的诀窍,但它似乎并非如此。

我已经测试了几个盒子,并且一直出现错误,直到我运行安装程序。 有趣的是,我卸载库后,它仍然有效(我猜它被缓存在某处)。

有没有人有任何类型的问题的经验?


原来的问题是,servicelocator.current是空的,因为我自动注册的绑定模块之一是缺少一个DLL。 因为引导程序被从global.asax调用,我有错误处理,应该是记录任何异常和继续(不希望整个网站停止这一页)。 所以我从来没有得到reg错误,我的引导程序没有告诉我失败。

var kernel = new StandardKernel();
//do bindings -> throw error here without reaching below two lines to regiester the service locator
var locator = new NinjectServiceLocator(kernel);
ServiceLocator.SetLocatorProvider(() => locator);
链接地址: http://www.djcxy.com/p/66271.html

上一篇: ninject and enterprise library service locator dependant assemblies

下一篇: add ribbon button like "Open" with drop