используя проблеск и структурную карту вместе - PullRequest
0 голосов
/ 27 августа 2011

Я добавляю структурную карту в свой проект для DI / IOC. Я создал демонстрационный проект, чтобы ознакомиться с ним, прежде чем добавлять его в свое приложение. После того, как он работал в демоверсии, я начал перемещать его в свое приложение.

Я также использую glimpse, и это, кажется, единственное, что вызывает проблемы с момента добавления карты структуры (пока).

Я следовал довольно простому учебнику по SM и пакету NuGet, и на данный момент я даже не вводил никаких зависимостей. Просто все было подключено.

Вот мой старт приложения

    IContainer container = new Container(x =>
    {
        x.For<IControllerActivator>().Use<StructureMapControllerActivator>();

    });

    DependencyResolver.SetResolver(new SmDependencyResolver(container));

Если я отключу glimpse, мое приложение будет работать так же, как и раньше. Я был бы готов начать делать DI. Но если я оставлю glimpse включенным, я получу исключение нулевого объекта. Вот трассировка стека, мне не очень повезло, следуя ей.

System.NullReferenceException: Object reference not set to an instance of an object.
at Glimpse.Mvc3.Interceptor.ActionInvokerProxyGenerationHook.NonProxyableMemberNotification(Type type, MemberInfo memberInfo)
at Castle.DynamicProxy.Contributors.MembersCollector.AcceptMethod(MethodInfo method, Boolean onlyVirtuals, IProxyGenerationHook hook)
at Castle.DynamicProxy.Contributors.ClassMembersCollector.GetMethodToGenerate(MethodInfo method, IProxyGenerationHook hook, Boolean isStandalone)
at Castle.DynamicProxy.Contributors.MembersCollector.AddMethod(MethodInfo method, IProxyGenerationHook hook, Boolean isStandalone)
at Castle.DynamicProxy.Contributors.MembersCollector.AddProperty(PropertyInfo property, IProxyGenerationHook hook)
at Castle.DynamicProxy.Contributors.MembersCollector.CollectProperties(IProxyGenerationHook hook)
at Castle.DynamicProxy.Contributors.MembersCollector.CollectMembersToProxy(IProxyGenerationHook hook)
at Castle.DynamicProxy.Contributors.ClassProxyTargetContributor.<CollectElementsToProxyInternal>d__2.MoveNext()
at Castle.DynamicProxy.Contributors.CompositeTypeContributor.CollectElementsToProxy(IProxyGenerationHook hook, MetaType model)
at Castle.DynamicProxy.Generators.ClassProxyGenerator.GenerateType(String name, Type[] interfaces, INamingScope namingScope)
at Castle.DynamicProxy.Generators.BaseProxyGenerator.ObtainProxyType(CacheKey cacheKey, Func`3 factory)
at Castle.DynamicProxy.ProxyGenerator.CreateClassProxy(Type classToProxy, Type[] additionalInterfacesToProxy, ProxyGenerationOptions options, Object[] constructorArguments, IInterceptor[] interceptors)
at Glimpse.Mvc3.Extensions.ControllerExtentions.TrySetActionInvoker(IController iController, IGlimpseLogger logger)
at System.Web.Mvc.MvcHandler.ProcessRequestInit(HttpContextBase httpContext, ref IController controller, ref IControllerFactory factory)
at System.Web.Mvc.MvcHandler.<>c__DisplayClass6.<BeginProcessRequest>b__2()
at System.Web.Mvc.SecurityUtil.<>c__DisplayClassb`1.<ProcessInApplicationTrust>b__a()
at System.Web.Mvc.SecurityUtil.ProcessInApplicationTrust(Func`1 func)
at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, ref Boolean completedSynchronously) 

1 Ответ

1 голос
/ 27 августа 2011

Исходя из вашего стека вызовов, похоже, что вы используете более старую версию Glimpse.

Эта ошибка была исправлена ​​в версии 0.85 Glimpse, которая теперь доступна на NuGet и CodePlex .Обновление должно исправить вашу проблему.

...