无法从程序集 'Ninject.Web.WebApi' 加载类型 'Ninject.Web.WebApi.IWebApiRequestScopeProvider'
Could not load type 'Ninject.Web.WebApi.IWebApiRequestScopeProvider' from assembly 'Ninject.Web.WebApi'
我最近将我的解决方案升级到 .net Framework 4.8 并更新了一堆 nuget 包,现在我在启动 API 项目时遇到问题。
我觉得这有不良绑定重定向的味道,但我已经看过了,它们如下...
<dependentAssembly>
<assemblyIdentity name="Ninject" publicKeyToken="c7192dc5380945e7" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-3.3.4.0" newVersion="3.3.4.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="Ninject.Web.Common" publicKeyToken="c7192dc5380945e7" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-3.3.2.0" newVersion="3.3.2.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="Ninject.Web.Common.OwinHost" publicKeyToken="c7192dc5380945e7" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-3.3.1.0" newVersion="3.3.1.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="Ninject.Web.WebApi" publicKeyToken="c7192dc5380945e7" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-3.3.1.0" newVersion="3.3.1.0" />
</dependentAssembly>
这里是 packages.config...
<package id="Ninject" version="3.3.4" targetFramework="net48" />
<package id="Ninject.Extensions.NamedScope" version="3.3.0" targetFramework="net48" />
<package id="Ninject.Web.Common" version="3.3.2" targetFramework="net48" />
<package id="Ninject.Web.Common.OwinHost" version="3.3.1" targetFramework="net48" />
<package id="Ninject.Web.Common.WebHost" version="3.3.2" targetFramework="net48" />
<package id="Ninject.Web.WebApi" version="3.3.1" targetFramework="net48" />
<package id="Ninject.Web.WebApi.OwinHost" version="3.3.0" targetFramework="net48" />
这里没有针对 Ninject.Web.WebApi.OwinHost
的特定重定向,所以我认为这可能是问题所在,或者可能是其他库之一,但他们之前从未有过重定向,我已经尝试过...
Get-Package MyApp.Api | Add-Bindings
(请原谅这里的语法-根据记忆可能有误)
...添加缺失的相关绑定。
这是由 Nuget 包的版本控制问题引起的(这就是我不再选择使用 Ninject 的原因...)
我降级了WebApi包如下...
<package id="Ninject.Web.WebApi" version="3.3.0" targetFramework="net48" />
因此它与 Ninject.Web.WebApi.OwinHost
一致,清理、重建并再次尝试,一切正常。
我怀疑 Ninject.Web.WebApi.OwinHost
软件包尚未更新且不兼容。
包裹
<package id="Ninject.Web.WebApi.OwinHost" version="3.3.0" targetFramework="net48" />
被
取代
<package id="Ninject.Web.WebApi.OwinSelfHost" version="3.3.1" targetFramework="net48" />
https://github.com/ninject/Ninject.Web.WebApi/issues/32#issuecomment-661886853
就我而言,我还需要将 Microsoft.AspNet.WebApi.Owin 更新到版本 5.2.7。
我最近将我的解决方案升级到 .net Framework 4.8 并更新了一堆 nuget 包,现在我在启动 API 项目时遇到问题。
我觉得这有不良绑定重定向的味道,但我已经看过了,它们如下...
<dependentAssembly>
<assemblyIdentity name="Ninject" publicKeyToken="c7192dc5380945e7" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-3.3.4.0" newVersion="3.3.4.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="Ninject.Web.Common" publicKeyToken="c7192dc5380945e7" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-3.3.2.0" newVersion="3.3.2.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="Ninject.Web.Common.OwinHost" publicKeyToken="c7192dc5380945e7" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-3.3.1.0" newVersion="3.3.1.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="Ninject.Web.WebApi" publicKeyToken="c7192dc5380945e7" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-3.3.1.0" newVersion="3.3.1.0" />
</dependentAssembly>
这里是 packages.config...
<package id="Ninject" version="3.3.4" targetFramework="net48" />
<package id="Ninject.Extensions.NamedScope" version="3.3.0" targetFramework="net48" />
<package id="Ninject.Web.Common" version="3.3.2" targetFramework="net48" />
<package id="Ninject.Web.Common.OwinHost" version="3.3.1" targetFramework="net48" />
<package id="Ninject.Web.Common.WebHost" version="3.3.2" targetFramework="net48" />
<package id="Ninject.Web.WebApi" version="3.3.1" targetFramework="net48" />
<package id="Ninject.Web.WebApi.OwinHost" version="3.3.0" targetFramework="net48" />
这里没有针对 Ninject.Web.WebApi.OwinHost
的特定重定向,所以我认为这可能是问题所在,或者可能是其他库之一,但他们之前从未有过重定向,我已经尝试过...
Get-Package MyApp.Api | Add-Bindings
(请原谅这里的语法-根据记忆可能有误)
...添加缺失的相关绑定。
这是由 Nuget 包的版本控制问题引起的(这就是我不再选择使用 Ninject 的原因...)
我降级了WebApi包如下...
<package id="Ninject.Web.WebApi" version="3.3.0" targetFramework="net48" />
因此它与 Ninject.Web.WebApi.OwinHost
一致,清理、重建并再次尝试,一切正常。
我怀疑 Ninject.Web.WebApi.OwinHost
软件包尚未更新且不兼容。
包裹
<package id="Ninject.Web.WebApi.OwinHost" version="3.3.0" targetFramework="net48" />
被
取代<package id="Ninject.Web.WebApi.OwinSelfHost" version="3.3.1" targetFramework="net48" />
https://github.com/ninject/Ninject.Web.WebApi/issues/32#issuecomment-661886853
就我而言,我还需要将 Microsoft.AspNet.WebApi.Owin 更新到版本 5.2.7。