![升级 MySQL Connector/Net](https://linux22.com/image/796885/%E5%8D%87%E7%BA%A7%20MySQL%20Connector%2FNet.png)
我正在尝试使用我们的托管服务提供商发布网站。我收到错误,因为他们只允许中等信任,并且MySQL 连接器/网络我使用的需要反射才能工作。不幸的是,中等信任度下不允许反射。
经过一番研究,我发现最新版本的 MySQL Connector/Net 可能会解决这个问题。Connector/Net 6.6 增强了部分信任支持,允许托管服务无需在 GAC 中安装 Connector/Net 库即可部署应用程序。我认为这可以解决我的问题。
因此,我卸载了 MySQL Connector/Net 6.4.4 并安装了 MySQL Connector/Net 6.6.4。
当我在 Visual Studio 2010 中运行该应用程序时出现错误:
ProviderIncompatibleException was unhandled by user code
信息是
An error occurred while getting provider information from the database. This can be caused by Entity Framework using an incorrect connection string. Check the inner exceptions for details and ensure that the connection string is correct.
InnerException 是
The provider did not return a ProviderManifestToken string.
当我安装 Connector/Net 6.4.4 时,一切都运行正常。我可以访问数据库并对其执行读/写/删除操作。
我在项目中参考了以下内容:
- 数据库
- MySql.数据.实体
- 数据库
Web.config 中的连接字符串
<connectionStrings>
<add name="AESSmartEntities"
connectionString="server=ec2-xxx-xx-xxx-xx.compute-1.amazonaws.com;
user=root;
database=nunya;
port=3306;
password=xxxxxxx;"
providerName="MySql.Data.MySqlClient" />
</connectionStrings>
我可能做错了什么?我是否需要任何其他设置才能使用 6.6.4 版本,而旧版本 6.4.4 中不需要这些设置?
答案1
我也在 MySQL 论坛上发布了这个问题。这是我收到的回复:
您说得对,Connector/Net 不必位于 GAC 中即可与 Medium Trust 配合使用,但这有一些限制。对于 Entity Framework 的情况,正如您所提到的,我们的驱动程序需要 Reflection 才能注册为提供程序。因此,如果没有此权限,它就无法使用。您只需要为成员访问您的策略添加此反射权限,或者在 GAC 中安装驱动程序。
我们正在寻找其他方式来注册 Entity Framework 的提供程序。到目前为止,连接器可以在中等信任级别下与 ADO.Net 配合使用,但还不能与 EF 配合使用。一旦我们在没有 GAC 的情况下为中等信任级别提供支持,我们会立即通知您。