Azure函数中的Ninject和Assembly Binding

时间:2018-05-25 08:28:48

标签: azure ninject azure-functions azure-functions-runtime assemblybinding

我有一个依赖于其他程序集的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>的人员如何解决代码中的问题,因此可能的解决方案包括此场所。

事先谢谢!

0 个答案:

没有答案