发布Entity Framework MVC 3网站时未找到DbProviderFactory

时间:2011-06-29 11:10:50

标签: asp.net-mvc-3 entity-framework-4

我有一个使用MVC 3和Entity Franework的项目。该站点在我的本地计算机上运行正常,但在发布到服务器时,我收到以下错误:

Unable to find the requested .Net Framework Data Provider.  It may not be installed.

我做了一些研究,似乎db提供者工厂没有注册。我试图将System.Data.Entity包含为copy local。但是这没用。

这是我的连接字符串:

<add name="SurveyEntities" connectionString="metadata=res://*/Models.Database.csdl|res://*/Models.Database.ssdl|res://*/Models.Database.msl;provider=System.Data.SqlClient;provider connection string=&quot;Data Source=websvr-new;Initial Catalog=Survey;Persist Security Info=True;User ID=SurveyUser;Password=5urv3yu5er;MultipleActiveResultSets=True&quot;" providerName="System.Data.EntityClient" />

我已经看到了一些可能的解决方案,但大多数与SqLite有关。

1 个答案:

答案 0 :(得分:2)

问题原来是我们服务器上的machine.config文件损坏了。其他一些db provider的安装程序创建了第二个导致错误的部分。只有在创建枚举Provider类工厂的控制器方法时,才会显示基础错误。以下控制器方法有助于诊断问题:

   public string provider()
        {
            string rs = "<table>";
            DataTable dt =  System.Data.Common.DbProviderFactories.GetFactoryClasses();
            foreach (DataRow row in dt.Rows)
            {
                rs += "<tr>";
                foreach (DataColumn COL in dt.Columns)
                {
                    rs += "<td>";
                    rs += ((string)row[COL]) ;
                    rs += "</td>";
                }
                rs += "</tr>";
            }
            rs += "</table>";
            return rs;
        }