让SNAP(AOP),NInject和ASP.Net MVC 3协同工作

时间:2011-03-01 16:34:17

标签: asp.net-mvc-3 ninject aop ninject-2

是否有人使用SNAP AOP框架与MVC 3和Ninject一起工作。

使用NuGet将Snap添加到MVC 3项目时给出的示例并不特别适用于以前添加的NInject包。我试图让它在正常的NInject方法的基础上运行,但却无法让它实际拦截!

有人可以在代码中显示如何执行此操作吗?

1 个答案:

答案 0 :(得分:4)

我通过NuGet使用最新版本的Ninject,现在在MVC3应用程序的新AppStart文件夹中添加了一个类调用NinjectMVC3。

我使用的代码如下: 在自动创建的NinjectMVC3.cs CreateKernel()方法中: -

         private static IKernel CreateKernel()
        {
            // Wire it up with AOP
            NinjectAopConfiguration.NinjectAopConfigure();

            //var kernel = new StandardKernel(); // Removed

            RegisterServices(NinjectAopConfiguration._container.Kernel);

            return NinjectAopConfiguration._container.Kernel;
        }

我还为Ninject连接了RegisterServices()方法中的各种注入目标。

接下来,当我将SNAP.Ninject添加到MVC 3应用程序时,我将NuGet生成的示例代码重命名为NinjectAOP.cs并使其看起来像这样:

 public static class NinjectAopConfiguration
    {
        public readonly static NinjectAspectContainer _container;

static NinjectAopConfiguration() { _container = new NinjectAspectContainer(); } public static void NinjectAopConfigure() { SnapConfiguration.For(_container).Configure(c => { c.IncludeNamespace("MyNamespace.Model.*"); c.Bind<ExceptionLoggingInterceptor>().To<ExceptionLoggingAttribute>(); }); } }

我还需要为Ninject做一个程序集绑定重定向,如下所示,因为Ninject的某处存在程序集版本冲突:

我希望这有助于某人。

我邀请任何人看看,看看他们是否可以改善这一点。