Open trymh opened 7 years ago
Same error in another app: https://procosys.statoil.com/elmah.axd/detail?id=4aa5ed7c-408b-4965-be27-fe4db6910117
System.NullReferenceException: Object reference not set to an instance of an object.
at Ninject.Planning.Bindings.BindingConfiguration.GetProvider(IContext context)
at Ninject.Activation.Context.ResolveInternal(Object scope)
at Ninject.Activation.Context.Resolve()
at System.Linq.Enumerable.WhereSelectEnumerableIterator2.MoveNext() at System.Linq.Enumerable.Single[TSource](IEnumerable
1 source)
at Bifrost.Execution.OrderedInstancesOf1.<GetEnumerator>d__3.MoveNext() in C:\T\f0471d076df39445\Source\Bifrost\Execution\OrderedInstancesOf.cs:line 46 at System.Linq.Enumerable.Aggregate[TSource,TAccumulate](IEnumerable
1 source, TAccumulate seed, Func`3 func)
at Infrastructure.Database.LazyTransactionalSession.GetCurrentSession() in C:\T\19d6398c6fa70ad6\Infrastructure\Database\LazyTransactionalSession.cs:line 31
at Read.CheckList.Home.CheckListSearches.get_Query() in C:\T\558d715eec7d76df\Read\CheckList\Home\CheckListSearches.cs:line 20
Possibly related to http://stackoverflow.com/questions/13475769/ninject-binding-getprovider-throws-nullreferenceexception
the only way I can think of this could happen is if you are adding bindings during runtime. But this isn't recommended anyway because it will give you an unpredictable outcome
Bifrost (and ProCoSys) is absolutely not adhering to this principle, so quite a lot of changes is needed to make sure bindings is not added after the first get. Basically, every usage of IContainer
should be split in two halves:
Bind
methods are allowed, and a temporary container system (a la ITypeDiscoverer
/IImplementorFinder
) should be used to retrieve instances.Get
methods are allowed.An incomplete list of issues:
Bind
methods should be taken out of IContainer
and put in a different interface that is only available during configuration.ICommandsConfiguration
et al) should not be retrieved from the container (as most of their purposes is to add bindings). (Custom configuration types should be added to IBootstrapConfiguration instead.)IDefaultBindings
and IDefaultConventions
. (Custom types should be added to IBootstrapConfiguration instead.)DefaultConventions
, ExecutionContextConfiguration
and SecurityConfiguration
should not be using Get
.
Exception thrown during initialization ?
Http request: GET /Bifrost/Application?applicationBuildTime=12.10.2016%2011:59:03
Error log: https://procosys.statoil.com/elmah.axd/detail?id=daa27293-6239-4de7-9923-762ba2ef3c0e
System.NullReferenceException: Object reference not set to an instance of an object. at Ninject.Planning.Bindings.BindingConfiguration.GetProvider(IContext context) at Ninject.Activation.Context.ResolveInternal(Object scope) at Ninject.Activation.Context.Resolve() at System.Linq.Enumerable.WhereSelectEnumerableIteratorb16_0(Type v) in C:\T\f0471d076df39445\Source\Bifrost.FluentValidation\Commands\CommandValidatorProvider.cs:line 137
at System.Linq.Enumerable.WhereSelectListIteratorb 10(String propertyName, Observable observable) in C:\T\f0471d076df39445\Source\Bifrost.Web\Commands\CommandProxies.cs:line 94
at Bifrost.CodeGeneration.JavaScript.AssignmentExtensions.WithObservable(Assignment assignment, ObservableVisitor visitor) in C:\T\f0471d076df39445\Source\Bifrost\CodeGeneration\JavaScript\AssignmentExtensions.cs:line 133
at Bifrost.CodeGeneration.JavaScript.ContainerExtensions.AddObservablePropertiesFromType(Container parent, IEnumerableb__6(TypeExtension t) in C:\T\f0471d076df39445\Source\Bifrost.Web\Commands\CommandProxies.cs:line 83
at Bifrost.CodeGeneration.JavaScript.AssignmentExtensions.WithType(Assignment assignment, Action
2.MoveNext() at System.Linq.Enumerable.Single[TSource](IEnumerable
1 source) at Bifrost.FluentValidation.Commands.CommandValidatorProvider.2.MoveNext() at System.Linq.Buffer
1..ctor(IEnumerable1 source) at System.Linq.Enumerable.ToArray[TSource](IEnumerable
1 source) at Bifrost.FluentValidation.Commands.CommandValidatorProvider.BuildDynamicallyDiscoveredInputValidator(Type commandType, IDictionary`2 typeAndAssociatedValidatorTypes) in C:\T\f0471d076df39445\Source\Bifrost.FluentValidation\Commands\CommandValidatorProvider.cs:line 137 at Bifrost.FluentValidation.Commands.CommandValidatorProvider.GetInputValidatorFor(Type commandType) in C:\T\f0471d076df39445\Source\Bifrost.FluentValidation\Commands\CommandValidatorProvider.cs:line 105 at Bifrost.FluentValidation.MetaData.ValidationMetaDataGenerator.GenerateFor(Type typeForValidation) in C:\T\f0471d076df39445\Source\Bifrost.FluentValidation\MetaData\ValidationMetaDataGenerator.cs:line 62 at Bifrost.Validation.MetaData.ValidationMetaData.GetMetaDataFor(Type typeForValidation) in C:\T\f0471d076df39445\Source\Bifrost\Validation\MetaData\ValidationMetaData.cs:line 46 at Bifrost.Web.Commands.CommandValidationPropertyExtender.Extend(Type commandType, String propertyName, Observable observable) in C:\T\f0471d076df39445\Source\Bifrost.Web\Commands\CommandValidationPropertyExtender.cs:line 37 at Bifrost.Web.Commands.CommandProxies.<>c__DisplayClass8_2.1 properties, Action
1 assignmentVisitor, ObservableVisitor observableVisitor) in C:\T\f0471d076df39445\Source\Bifrost\CodeGeneration\JavaScript\ContainerExtensions.cs:line 140 at Bifrost.CodeGeneration.JavaScript.ContainerExtensions.WithObservablePropertiesFrom(Container container, Type type, Type excludePropertiesFrom, Func2 propertyVisitor, Action
1 assignmentVisitor, ObservableVisitor observableVisitor) in C:\T\f0471d076df39445\Source\Bifrost\CodeGeneration\JavaScript\ContainerExtensions.cs:line 53 at Bifrost.Web.Commands.CommandProxies.<>c__DisplayClass8_1.1 callback) in C:\T\f0471d076df39445\Source\Bifrost\CodeGeneration\JavaScript\AssignmentExtensions.cs:line 89 at Bifrost.Web.Commands.CommandProxies.Generate() in C:\T\f0471d076df39445\Source\Bifrost.Web\Commands\CommandProxies.cs:line 81 at Bifrost.Web.Proxies.GeneratedProxies..ctor(CommandProxies commandProxies, QueryProxies queryProxies, ReadModelProxies readModelProxies, ServiceProxies serviceProxies, NamespaceConfigurationProxies namespaceConfigurationProxies, HubProxies hubProxies, ITypeDiscoverer typeDiscoverer, IContainer container) in C:\T\f0471d076df39445\Source\Bifrost.Web\Proxies\GeneratedProxies.cs:line 46 at DynamicInjector60832d98b29e48cb8fd8f6359bb1e606(Object[] ) at Ninject.Activation.Context.ResolveInternal(Object scope) at Ninject.Activation.Context.Resolve() at System.Linq.Enumerable.WhereSelectEnumerableIterator
2.MoveNext() at System.Linq.Enumerable.Single[TSource](IEnumerable`1 source) at Infrastructure.Container.ProCoSysContainer.Get[T]() in C:\T\19d6398c6fa70ad6\Infrastructure\Container\ProCoSysContainer.cs:line 34 at Bifrost.Web.Application.ApplicationHttpHandler.InitializeIfNotInitialized() in C:\T\f0471d076df39445\Source\Bifrost.Web\Application\ApplicationHttpHandler.cs:line 103 at Bifrost.Web.Application.ApplicationHttpHandler.OutputContent(HttpContext context) in C:\T\f0471d076df39445\Source\Bifrost.Web\Application\ApplicationHttpHandler.cs:line 82 at Bifrost.Web.Application.ApplicationHttpHandler.ProcessRequest(HttpContext context) in C:\T\f0471d076df39445\Source\Bifrost.Web\Application\ApplicationHttpHandler.cs:line 66 at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)