Unity依赖注入 - 如何在.config中注册实例?

时间:2009-04-20 10:42:08

标签: asp.net-mvc dependency-injection unity-container

这是一个C#Asp.net MVC项目。

我目前在global.asax.cs中设置了Unity映射。我想将容器设置从代码移动到web.config。

我自己的类型一切都很好,但现在我需要翻译这一行:

container.RegisterInstance(System.Web.Security.Membership.Provider);

(所有其他配置行都是container.Register Type )。

我根本没有走得太远。 如果我甚至包括

<typeAliases>
    <!-- others elided -->
    <typeAlias
    alias="MembershipProvider"
type="System.Web.Security.MembershipProvider, System.Web"></typeAlias>

它因配置错误而死:

The value of the property 'type' cannot be parsed. The error is: Could not load file or assembly 'System.Web' or one of its dependencies. The system cannot find the file specified.

所以这很奇怪 - 似乎它没有在GAC中寻找它来解决它?或者System.Web还不在appdomain中?

如果我手动将System.Web复制到bin文件夹,我可以继续,并解决问题的关键:如何RegisterInstance System.Web.Security.MembershipProvider - &gt; System.Web.Security.Membership.Provider?

<type type="MembershipProvider" mapTo="System.Web.Security.Membership.Provider, System.Web"></type>

给出:

无法从程序集“System.Web”加载“System.Web.Security.Membership.Provider”类型。

如预期的那样,因为它不是一种类型。

感谢您的任何指示。

1 个答案:

答案 0 :(得分:5)

您是否尝试过较长的Assembliy参考?

System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a

所以在你的情况下,你会有像

这样的行
<type type="MembershipProvider" mapTo="System.Web.Security.MembershipProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"></type>

另外提到你有一个。在第二个例子中的“MembershipProvider”中间。