我有一个使用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="Data Source=websvr-new;Initial Catalog=Survey;Persist Security Info=True;User ID=SurveyUser;Password=5urv3yu5er;MultipleActiveResultSets=True"" providerName="System.Data.EntityClient" />
我已经看到了一些可能的解决方案,但大多数与SqLite有关。
答案 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;
}