내 프로젝트에서 나는 Autofac을 사용하고있다. 이전에는 괜찮 았어. 이제 Autofac에 새로운 코드를 추가했는데 "작성 대리자가 null을 반환하지 않아야합니다."오류가 발생했습니다. 내가 TestPermissionHelper
를 해결하고 Applicaiton_PostAuthenticate()
방법에서는 Global.asax
에서 지금오류 : 생성 대리자가 Autofac에서 null을 반환하지 않아야합니까?
builder.Register<Rep>(c => {
/*Get Session and LoginId*/
return session.CreateQuery(@"from Rep where LoginId='" +
LoginId+ "'").List<Rep>().
FirstOrDefault() ?? new Rep();
});
builder.Register<TestPermissionHelper>();
다음과 같이 내가 만든
변경입니다.
재미있는 점은 내가 로그인 페이지를 때리면 오류가 발생한다는 것입니다. 그렇지 않으면 정상적으로 작동합니다.
이 작은 코드에서 전체 그림을 이해하는 것이 어렵다는 것을 알고 있습니다. 누군가가 적어도이 유형의 오류에 대한 가능한 이유가 무엇인지 말해 줄 수 있다면 좋을 것입니다.
감사
참고 :이 도움이 될 수 있다면, 나는 또한 오류의 스택 추적을 제공하고
Stack trace: at Autofac.Component.Activation.DelegateActivator.ActivateInstance(IContext context, IEnumerable`1 parameters)
at Autofac.Component.Registration.ResolveInstance(IContext context, IEnumerable`1 parameters, IDisposer disposer, Boolean& newInstance)
at Autofac.Context.TryResolve(Service service, Object& instance, IEnumerable`1 parameters)
at Autofac.Context.Resolve(Service service, IEnumerable`1 parameters)
at Autofac.Context.Resolve(Type serviceType, IEnumerable`1 parameters)
at Autofac.Component.Activation.AutowiringParameter.<>c__DisplayClass2.<CanSupplyValue>b__0()
at Autofac.Component.Activation.DirectConstructorInvoker.<InvokeConstructor>b__0(Func`1 pa)
at System.Linq.Enumerable.WhereSelectArrayIterator`2.MoveNext()
at System.Linq.Buffer`1..ctor(IEnumerable`1 source)
at System.Linq.Enumerable.ToArray[TSource](IEnumerable`1 source)
at Autofac.Component.Activation.DirectConstructorInvoker.InvokeConstructor(IContext context, IEnumerable`1 parameters, ConstructorInfo ci, Func`1[] args)
at Autofac.Component.Activation.ReflectionActivator.ConstructInstance(ConstructorInfo ci, IContext context, IEnumerable`1 parameters, Func`1[] parameterAccessors)
at Autofac.Component.Activation.ReflectionActivator.ActivateInstance(IContext context, IEnumerable`1 parameters)
at Autofac.Component.Registration.ResolveInstance(IContext context, IEnumerable`1 parameters, IDisposer disposer, Boolean& newInstance)
at Autofac.Context.TryResolve(Service service, Object& instance, IEnumerable`1 parameters)
at Autofac.Context.Resolve(Service service, IEnumerable`1 parameters)
at Autofac.Context.Resolve(Type serviceType, IEnumerable`1 parameters)
at Autofac.Context.Resolve[TService](IEnumerable`1 parameters)
at Autofac.Context.Resolve[TService](Parameter[] parameters)
at Autofac.Container.Resolve[TService](Parameter[] parameters)
그래, 문제는 제가 Rep의 등록 정보에 액세스 했으므로 null 이었기 때문에 오류가 발생했습니다. – Bipul