“无法加载指定的元数据资源”突然出现而不更改代码

时间:2014-11-03 12:39:12

标签: asp.net-mvc entity-framework asp.net-web-api

请注意:上面链接中的答案(我似乎无法删除)都没有帮助我。正如我在下面解释的那样,我已经尝试了所有这些东西

我有一个使用ASP.NET MVC5 / WebAPI2在VS2013中开发的网站,它有几个相关的项目,如服务层,存储库层等。在栈的底部是一个类库,它包含一个EF模型。我已将实际实体分离到另一个类库中,以允许重用它们而无需模型库。

所有这一切都运作良好。网站正在运行,我也可以调用WebAPI方法。

我刚刚将最新版本上传到生产服务器,一切正常。然后回到VS继续工作,当我尝试运行网站时,我得到一个例外

  

无法加载指定的元数据资源

搜索一下,似乎解决这个问题的方法是修改连接字符串以指向实际的程序集名称,而不是使用默认值。我有两个问题,首先是今天没有触及解决方案中的任何配置文件(至少由我来,文件历史表格源控件确认了这一点),所以没有理由为什么它应该突然停止工作正在部署,其次,即使我添加了程序集名称,我也会得到相同的异常。

任何想法我能做什么?我现在已经被塞满了。无能为力。

编辑:我再次尝试在连接字符串中指定程序集,现在获取异常Unable to resolve assembly。我已经在反编译器中检查了程序集名称,我很确定它是正确的。

再次编辑:我刚从源代码控制中提取了我部署的版本,并且提供了相同的异常,所以我确定这与我更改的任何文件无关(甚至VS已经改变了。生产服务器上的版本仍然有效,但驱动完全相同版本的源代码会产生异常。所以,我确信答案不是在这个问题的无数其他版本中找到的,而是在其他地方。

1 个答案:

答案 0 :(得分:1)

发现问题,并将其发布在此处,希望它能帮助其他人,因为我不认为这个问题在任何其他帖子中都是明确的。

我有一个分层解决方案,其中Web项目引用了一个服务层,该服务层引用了一个存储库层,后者又引用了模型项目。 EF似乎可以工作,无论哪个层实际上导致访问数据库都需要引用模型项目。我的服务层项目,即调用ToList()的位置(因此枚举查询,并导致数据库被命中)没有对模型项目的引用,因此无法加载程序集。

我也不需要改变连接字符串的元数据部分,因为一旦服务层具有对模型项目的引用,它就能够自己找到资源。话虽如此,我从这一切中学到的一件事是,通过明确指定包含资源的程序集,可以加快模型的创建(稍微),因为这样可以保存框架必须搜索所有已加载的程序集以查找他们。我不确定这是否会产生明显的差异,但它不会造成伤害。

我仍然无法解释这一直到现在是如何工作的,并且突然停止了,因为我没有改变任何引用,也没有改变我进行数据访问的方式。不过,它似乎现在正在发挥作用,这一切都很重要。

希望这有助于某人。