我已经将我的WCF项目发布到服务器上,我还在同一个盒子上发布了一个消耗WCF服务的MVC应用程序。
在我的MVC应用程序上尝试登录时,这会使用wcf服务,但我在浏览器上遇到此异常,
无法加载在具有不变名称“System.Data.SqlClient”的ADO.NET提供程序的应用程序配置文件中注册的实体框架提供程序类型“System.Data.Entity.SqlServer.SqlProviderServices,EntityFramework.SqlServer”。确保使用了程序集限定名称,并且程序集可供正在运行的应用程序使用。
这是一个实体框架异常,但我假设因为我的项目已经在开发环境中引用了EF,在部署服务项目之后,DLL也应该包含EF引用,但我不知道为什么我会收到此错误。
我可以看到这条消息,因为我打开了includeExceptionDetailInFaults="True"
@FranciscoGoldenstein说!您无需在控制台应用程序中安装Entity Framework或其他任何内容,只需添加对程序集EntityFramework.SqlServer.dll的引用即可。您可以将此程序集从使用Entity Framework的类库项目复制到LIB文件夹并添加对它的引用。
综上所述:
这对我有用!我希望它有所帮助。
卸载Entity Framework nuget并重新安装,为我工作。
解决此问题的最简单方法是在EF项目的其中一个类中添加以下行:
public class Blablabla
{
private static string __hack = typeof(SqlProviderServices).ToString();
// other class members as they were before.
}
这将强制构建过程将EntityFramework.SqlServer.dll复制到任何引用EF项目的项目的\bin
文件夹中。
无需在任何下游项目中安装EF nuget包或对EntityFramework.SqlServer.dll进行显式引用。
正如我在my answer to another similar question中建议的那样,删除bin文件夹并清理/重建您的解决方案。