最近我开始尝试ASP.NET MVC和实体框架。由于我的hostingprovider只为我提供了MySQL,我一直试图设置它。 本地一切正常,但在我发布后,我收到以下错误:
[ProviderIncompatibleException: The store provider factory type 'MySql.Data.MySqlClient.MySqlClientFactory' does not implement the IServiceProvider interface. Use a store provider that implements this interface.]
由于我对配置这方面缺乏经验,谷歌缺乏一个好的答案,我想我会在这里尝试。 我最好的猜测是web.config文件中缺少的东西,但无法真正弄清楚它是什么。
非常感谢任何帮助!
答案 0 :(得分:3)
我想我找到了解决方案。 a)我应该将提供者添加到我的web.config:
<system.data>
<DbProviderFactories>
<clear />
<add name="MySQL Data Provider" invariant="MySql.Data.MySqlClient" description=".Net Framework Data Provider for MySQL" type="MySql.Data.MySqlClient.MySqlClientFactory, MySql.Data, Version=6.0.4.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" />
</DbProviderFactories>
</system.data>
b)我需要在我的项目中引用MySQL DLL(来自连接器),以确保我会使用:
c)这些文件必须与网站一起发布,所以在我们设置的属性中 '将本地复制'为真。
d)确保web.config中的版本对应于dll的真实版本
可悲的是,至少8个小时我都无法尝试这个(因为我现在正在工作),但是当我在我们最好的思考的地方做一些思考的时候,我才想到这一点。 。 编辑:工作:))答案 1 :(得分:1)
我有同样的问题(mysql,发布网站到主机,VS2008,MySql Connector 6.1.3.0)。我必须做一些事情来使我的托管网站工作。我在另一个网站上找到了这些解决方案,抱歉,我没有这些链接,所以我无法给予他们信任。
首先,我添加了上面提到的参考资料。以及在我的BIN文件夹中使用DLL的dbFactories代码,而不是服务器GAC。
其次我必须创建单独的msl,ssdl,csdl(我通过创建一个Windows窗体应用程序并将清单更改为'复制到输出目录'来完成此操作)。我将这些文件放在网站的APP_DATA目录中。
然后我将连接字符串更改为如下所示。连接字符串最初是用'quot'而不是单撇号创建的?我想是一个错误。
add name =“classEntities”connectionString =“metadata =〜\ App_Data \ Model.csdl |〜\ App_Data \ Model.ssdl |〜\ App_Data \ Model.msl; provider = MySql.Data.MySqlClient; provider connection string = 'server = hostServer; user id = myUsername; password = myPassword; database = schema'“providerName =”System.Data.EntityClient“
希望这对某人有所帮助,我花了一两个星期才把它整理好。
答案 2 :(得分:1)
上面列出的文件是MySql.Data.dll的依赖程序集,必须位于bin文件夹中,但前提是如果托管Web应用程序的服务器上未安装mysql.data.msi程序包。否则无需将这些文件放在bin文件夹中。
只需在服务器上安装mysql.data.msi,只将MySql.Data.dll放入bin文件夹并成功运行应用程序。
哈比卜哈米德 Habibullah.hameed@yahoo.com答案 3 :(得分:0)
文件: “mysql.web.dll”,“mysql.data.entity.dll”,“mysql.data.dll” 必须在主机中的“bin”文件夹和“root-www”文件夹中。
文件:“mysql.data.cf.dll”什么都不做,如果在“bin”文件夹中会出错。