ASP.NET MVC4 WebAPI EntityFramework异常

时间:2012-05-27 22:02:41

标签: asp.net asp.net-web-api

我正在尝试在网站内创建一个webapi控制器。它是一个模板控制器,与visual studio插入的内容没有任何变化。

代码在MVC4站点内,完全没有任何错误运行,但是,当我调用webapi控制器时,我收到此错误:

无法加载文件或程序集'EntityFramework,Version = 4.1.0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089'或其依赖项之一。系统找不到指定的文件。

我已经卸载了EntityFramework nuget包,当我在整个解决方案中搜索时,在任何文件中找不到它,但是,我反复收到此错误。

有什么可能解决方案的线索?

8 个答案:

答案 0 :(得分:2)

我遇到了同样的问题。

一切正常,然后才开始为所有网络API请求提供404。

我已经尝试过所有内容..解决我的问题的唯一方法是将EF 4.1.0.0的引用添加到我的项目中,并将其添加到Web.config中。

奇怪,因为在我的解决方案中我没有使用或引用EF。

我没有4.1版本,我从这里下载http://www.microsoft.com/en-us/download/details.aspx?id=26825


我发现为什么EF 4.1被列为依赖项。只有当我想发布网站时才出现错误。我所做的只是添加可部署的依赖并检查ASP.NET MVC,因为主机服务器没有安装MVC 4。当我查看_bin_deployableAssemblies文件夹

enter image description here

我的眼睛抓住了System.Web.Http.Data.EntityFramework.dll并立即反编译,我发现那里引用了EF 4.1。

enter image description here

答案 1 :(得分:1)

Arian,我在使用EF4时每次使用库存VS模板时都会看到错误。

转过来,在解决方案中再次安装Entity Framework。启动Nuget管理器或从其控制台执行:

Install-Package EntityFramework 

(适用于4.3.1)

Install-Package EntityFramework -Pre  

(适用于5.0.0rc)

一旦你的引用中有了DLL(顺便说一下,检查一下),错误就会消失

答案 2 :(得分:1)

尝试将以下内容添加到您的web.config文件中:

  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="EntityFramework" publicKeyToken="b77a5c561934e089" />
        <bindingRedirect oldVersion="0.0.0.0-4.3.1.0" newVersion="4.3.1.0" />
      </dependentAssembly>
    </assemblyBinding>
  </runtime>

答案 3 :(得分:0)

  

它是一个模板控制器,与visual studio插入的内容没有任何变化。

由于这些模板,实体框架可能是依赖关系。某些模板将生成DataControllers,这需要EF。如果您仔细阅读,您将在模板显示的文本中看到:“生成....,使用实体框架

如果不是这种情况,并且您有简单的ApiControllers,并且您已卸载EF,请仔细检查您的packages.config文件,以确保没有对Entity Framework的引用任

答案 4 :(得分:0)

尝试删除每个项目的objbin文件夹,然后重建应用程序。这有助于我不止一次解决同样的问题。

答案 5 :(得分:0)

尝试在记事本等文本编辑器中打开项目的.csproj文件,然后搜索短语&#34; EntityFramework&#34;。如果它出现点击,那可能会给你一个关于这个问题的线索。

答案 6 :(得分:0)

删除 EntityFramework的web.config dependentAssembly行为我的项目修复了它。

Screenshot of web.config code - dependentAssembly - EntityFramework

答案 7 :(得分:0)

就我而言,由于我使用的是.NET 4.0,因此在升级到VS2012之后我不得不恢复到EntityFramework 4.1(需要一个不同的项目)。

在VS 2010中的程序包管理器控制台中运行此命令:

PM&GT; Install-Package EntityFramework -Version 4.1.10715.0