对象和企业库服务定位器相关程序集

本文关键字:程序集 定位器 服务 企业库 对象 | 更新日期: 2023-09-27 18:09:58

我将Microsoft.Practices.ServiceLocation程序集与ninject结合使用,以帮助定位服务。我将我的ninject内核注册到servicelocator提供程序方法中:

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

上面的代码在安装了企业库的机器上运行良好(通过msi可执行文件)。我不能在生产中运行安装程序,所以我在bin目录中本地有dll,希望这将起作用。然而,它不起作用。我没有得到任何没有发现异常的程序集,相反,我得到一个对象引用没有设置异常,从调用:'at microsoft . practices . servicelocator . servicelocator . get_current()'。

我在几个地方读到这个程序集没有任何依赖http://msdn.microsoft.com/en-us/library/ff664422%28v=PandP.50%29.aspx和本地dll应该做的技巧,但它似乎没有。

我已经在几个盒子上测试过了,这个错误一直发生,直到我运行安装程序。有趣的是,在我卸载库之后,它仍然可以工作(我猜它缓存在某个地方)。

有人对这类问题有经验吗?

对象和企业库服务定位器相关程序集

问题原来是服务定位器。Current是空的,因为我自动注册的一个绑定模块缺少一个dll。因为引导程序是从全局调用的。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);