中型信任共享环境中的MySql Connectors 6.7.4

时间:2013-11-13 03:59:24

标签: c# mysql asp.net .net security

首先,我想说我试图通过尝试一些具有相同问题的人的不同方法来解决这个问题几个小时,但无济于事。我现在很无能为力。

我正在使用我在ASP.NET 4.5应用程序中引用的MySql.Data和MySql.Data.Entity dll(版本6.7.4)。

我已经设法连接(本地)到我的数据库并查询它没有问题。

SqlConnection = new MySqlConnection("server=localhost;User Id=;Password=;database=;");

问题出在中等信任共享环境中。 我收到以下错误(尝试连接到数据库时):

描述:应用程序尝试执行安全策略不允许的操作。要授予此应用程序所需的权限,请与您的系统管理员联系或在配置文件中更改应用程序的信任级别。 异常详细信息:System.Security.SecurityException:请求类型为'System.Security.Permissions.SecurityPermission,mscorlib,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089'的权限失败。

我还尝试添加“Integrated Security = True; includesecurityasserts = true; autoenlist = false;”连接字符串,但没有帮助。

我也尝试在我的web.config中添加它:

<mscorlib>
<security>
  <policy>
    <PolicyLevel version="1">
      <SecurityClasses>
        <SecurityClass Name="MySqlClientPermission" Description="MySql.Data.MySqlClient.MySqlClientPermission, MySql.Data, Version=6.7.4.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d"/>
      </SecurityClasses>
      <NamedPermissionSets>
        <PermissionSet class="NamedPermissionSet" version="1" Name="ASP.Net">
          <IPermission class="MySqlClientPermission" version="1" Unrestricted="true">
          </IPermission>
        </PermissionSet>
      </NamedPermissionSets>
    </PolicyLevel>
  </policy>
</security>

但这也不起作用。

然后我尝试通过一些文章添加一堆PermissionSets,IPermissions以及web.config中没有的内容,但这似乎对我没用。

请注意:

  • 在web.config中设置信任级别=“完全”不是一个选项。
  • 我用来连接数据库的连接字符串不在我的web.config中,我想保持这种方式。
  • 使用除MySql之外的任何其他内容都不是一种选择。

感谢任何和所有帮助!谢谢!

修改

我已经改变了使用ODBC连接与数据库通信的方式。 使用完全信任正常工作,但只要我改为中等信任,我就会得到与MySql连接器基本相同的错误。

  

请求类型'System.Data.Odbc.OdbcPermission,System.Data,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089'的权限失败。

任何人都可以请我指出正确的方向,例如关于如何使其成功运作的完整示例,因为我似乎无法使用中等信任来完成这项工作......

谢谢!

3 个答案:

答案 0 :(得分:2)

我最终使用了ODBC连接。

Driver={MySQL ODBC 5.1 Driver};Server=myServerAddress;Database=myDataBase; User=myUsername;Password=myPassword;Option=3;

http://www.connectionstrings.com/mysql-connector-odbc-5-1/remote-database/

答案 1 :(得分:1)

我知道您尝试了以下解决方案:

  1. 将安全性从Web配置更改为完全信任。
  2. 使用bin部署(复制到本地以获取dll属性)。
  3. 更改程序集的信任级别。 还有很多其他人,但没有人在工作。
  4. 您无法在中等信任上部署此功能。它需要完全信任正确的工作。 可能是您正在使用中型信任服务器进行部署。您需要完全信任部署。只有解决方案才需要在完全信任环境中运行它。您需要与服务器支持联系,并将信任级别介质更改为“完全”。

答案 2 :(得分:0)

以下是我尝试让MySql在中等信任环境中工作时解决类似问题的方法。

我们尝试了所有的“书”,但根本无法让它发挥作用!

原来MySql连接器版本是关键。 向您询问网络托管公司他们在GAC服务器上安装了哪些版本的MySqlClient

(GAC只是意味着该库已安装在服务器上,因此可以直接引用它,而无需将MySql.Data.dll上传到您的bin文件夹。最新的可安装版本可在此处获取:{ {3}})。

在GAC服务器上安装驱动程序后,您只需要在web.config中引用它,但将您的网络托管公司版本替换为版本= 6.6.5.0

<compilation debug="true" targetFramework="4.0">
  <assemblies>
    <add assembly="MySql.Data, Version=6.6.5.0, Culture=neutral, PublicKeyToken=C5687FC88969C44D"/>
  </assemblies>    
</compilation>