我有一个依赖于其他程序集的Azure函数,而这些程序集依赖于Ninject来依赖注入。在运行时期间,Ninject似乎无法解析某些自定义Ninject.Activation.Provider<T>
的依赖项,从而导致System.IO.FileNotFoundException
。
堆栈跟踪的Ninject部分是:
at Ninject.Activation.Provider`1.Create(IContext context) 在Ninject.Activation.Context.ResolveInternal(对象范围) 在Ninject.Activation.Context.Resolve() 在Ninject.KernelBase。&lt;&gt; c__DisplayClass15.b__f(IBinding绑定) 在System.Linq.Enumerable.WhereSelectEnumerableIterator`2.MoveNext() 在System.Linq.Enumerable.SingleOrDefault [TSource](IEnumerable`1 source) 在Ninject.Planning.Targets.Target`1.GetValue(输入服务,IContext父级) 在Ninject.Planning.Targets.Target`1.ResolveWithin(IContext parent) 在Ninject.Activation.Providers.StandardProvider.GetValue(IContext context,ITarget target) 在Ninject.Activation.Providers.StandardProvider。&lt;&gt; c__DisplayClass4.b__2(ITarget目标) 在System.Linq.Enumerable.WhereSelectArrayIterator`2.MoveNext() 在System.Linq.Buffer`1..ctor(IEnumerable`1 source) 在System.Linq.Enumerable.ToArray [TSource](IEnumerable`1 source) 在Ninject.Activation.Providers.StandardProvider.Create(IContext context) 在Ninject.Activation.Context.ResolveInternal(O ...
未解决的依赖关系是System.Web.Mvc, Version=5.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35
(或其中一个依赖关系)。它通过NuGet包含在项目中。
然而,这个程序集确实存在于Azure Function的bin文件夹中的磁盘上,并且构建本身很好。因此,我的理论是,在实例化自定义Provider<T>
时,Ninject会做一些特殊的事情。
也许Ninject期望相对于函数执行的位置或其他位置在另一个位置收集依赖项?也许它根本不是Ninject应该受到指责,而是在涉及如何在我不知道的Azure环境中解决依赖关系时的某些特定内容?
我希望你们中的一个人可以通过揭示这里发生的事情来帮助我,或者提出一个明智的故障排除方法,因为我已经吸引了所有的空白几天了。
如果情况确实如此,我可以影响负责自定义Provider<T>
的人员如何解决代码中的问题,因此可能的解决方案包括此场所。
事先谢谢!