无法从程序集“Ninject.Web.WebApi”加载类型“Ninject.Web.WebApi.IWebApiRequestScopeProvider”

问题描述 投票:0回答:3

我最近将解决方案升级到 .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

(请原谅这里的语法 - 根据记忆,它可能是错误的)

...添加缺少的相关绑定。

asp.net-web-api ninject ninject.web.mvc
3个回答
3
投票

这是由 Nuget 包的版本控制问题引起的(这就是为什么我不再选择使用 Ninject...)

我降级了WebApi包如下...

<package id="Ninject.Web.WebApi" version="3.3.0" targetFramework="net48" />

因此它符合

Ninject.Web.WebApi.OwinHost
,清理,重建并再次尝试,一切都很完美。

我怀疑

Ninject.Web.WebApi.OwinHost
软件包尚未更新并且不兼容。


2
投票

包装

<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。


0
投票

就我而言,各种较旧的 Ninject 程序集(3.3.0)仍保留在构建目录中,即使在 Clean 上也是如此,删除这些程序集可以解决问题。我怀疑如果我从引用了 Ninject.Web.WebApi.OwinHost.dll 的旧分支构建,就会出现(并重新出现)该问题。然后,在较新的版本中,不会引用文件名,因此清理/重建只需将其留在那里即可。类似这样的事情。

以下是 VS 无法“清除”的违规文件: Offending Ninject files

© www.soinside.com 2019 - 2024. All rights reserved.