无法找到请求的.Net Framework数据提供程序。 程序(SqlClient)

我正在尝试使用数据库首次从SQL Server迁移(2005)来设置一个简单的ASP.NET MVC 4 webapp。 我在数据库中创建了表,并使用Entity Framework在代码中创建了对象。 我可以使用这些对象访问数据。

当我尝试使用WebSecurity.InitializeDatabaseConnection("FLMREntities", "UserProfile", "UserId", "UserName", true);初始化WebSecurity时出现问题WebSecurity.InitializeDatabaseConnection("FLMREntities", "UserProfile", "UserId", "UserName", true); 在Global.asax.cs文件中。 我已经尝试使用模板附带的InitializeSimpleMembershipAttributefilter并遇到了同样的问题。 我收到错误消息:

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

这是相关的连接字符串:

  

此外,我在数据库中创建了成员资格表,以匹配模板创建的内容。 如果我将Initialize调用中的最后一个参数更改为false(以便它不会尝试自动创建表),则返回它无法找到UserProfile表。 我也试过名称的变体,例如[dbo]。[UserProfile]。

我只需要一个简单的帐户模型,以允许用户登录并允许某些用户查看更多内容。

我有类似的问题,我做了什么:我修改了默认连接。 我已经有了edmx模型的连接字符串,如下所示:

  

但我不能将它与SimpleMemebrship提供程序一起使用。 所以在Visual Studio中,我打开了服务器资源管理器>数据连接,我选择了我的连接,右键单击,属性,然后我从那里复制了连接字符串并将其粘贴到defaultConnection:

  

之后,我更改了WebSecurity.InitializeDatabaseConnection以使用DefaultConnection。

 WebSecurity.InitializeDatabaseConnection("DefaultConnection", "UserProfile", "UserId", "UserName", true); 

这可能与此重复。

根据我对此问题的记忆,您需要确保已注册sqldata提供程序。 有时,在你的machine.config中有一个你需要删除的重复条目,如果我没记错的话,你可能需要删除一个错误的条目。 看看这个msdnpost ,这个信息大约是页面的一半。

与其他SO的链接有一些可能有用的链接。 如果最终没有被标记为重复的问题,我也可以在这里添加它们或者做任何正确的事情。

您正在寻找的部分看起来与我想的相似:

      

根据您在评论中提供的信息,您的machine.config中似乎缺少此信息。 除非我错了(可能),否则意味着SQL Provider未在您的计算机上注册。 您需要将以上部分添加到web.config中。 您还需要确保在项目中引用System.Data.SqlClient。

如果目标计算机上没有安装,则需要做更多工作,安装它。 我希望我可以帮助你更多,但是当我这样做时,它是为SqlServerCE,所以我使用的文件是非常不同的。

祝好运!

编辑:一个重要的信息,是版本需要匹配您正在使用的文件。 在type =“blabh..blah..blah..Version = 2.0.0.0,blah blah”中,它需要是您正在使用的文件的版本,因此请右键单击您的文件并获取文件版本。 如果失败,请尝试版本的变体。 我相信我的文件是2.0.0.1但版本= 2.0是我做的时候有用的。 只需根据您的版本号(例如2.0,2.0.0,2.0.0.1)尝试几个不同的版本。

只是想在这里讨论,我有这个问题,通过查看我的machine.config来获取我正在运行的目标.NET版本……在结构中:

确保您的目标数据提供程序在其中正确输入,每个提供程序只有一个(我看到重复项会导致问题),并确保它是有效的XML,并且您只有一个DBProviderFactories条目。 在我的情况下,我在初始条目后有一个条目(基本上是两个条目,一个与我的提供者,一个空白),并且空白是导致所有问题。

希望这可以帮助有同样问题的人:)