中等信任共享环境上的MySql连接器6.7.4

问题描述 投票:3回答:4

首先,我想说,我已经尝试了几个小时,通过尝试使用具有相同问题但无济于事的人们的不同方法来解决此问题。在这一点上我还是一无所知。

我正在使用我在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'的权限失败。

我还尝试添加“集成安全性= 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>

但是那也不起作用。

然后,通过阅读一些文章,我试图在Web.config中添加一堆PermissionSet,IPermissions和其他内容,但这似乎对我不起作用。

请注意:

  • 无法在web.config中设置信任级别=“完全”。
  • 我用来连接数据库的连接字符串不在我的web.config中,我想保持这种方式。
  • 除了MySql以外,不能使用其他任何选项。

感谢您的帮助!谢谢!

编辑

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

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

[谁能请我指出正确的方向,例如有关如何成功实现此目标的完整示例,因为我似乎无法借助中等信任度来完成此工作...

谢谢!

c# mysql asp.net .net security
4个回答
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. 将安全性从Web配置更改为完全信任。
  2. 使用bin部署(将dll属性复制到本地)。
  3. 更改程序集的信任级别。还有很多其他但没有人在工作。

您不能以中等信任度部署它。它需要充分的信任才能正常工作。可能是您正在使用中等信任服务器进行部署。您需要完全信任部署。唯一的解决方案是您需要在完全信任环境下运行它。您需要与服务器支持部门联系,并将信任级别介质更改为“完全”。


0
投票

这是我试图使MySql在中等信任环境中工作解决的类似问题。

我们尝试了“书”的所有内容,但无法正常工作!

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

(GAC只是意味着该库已安装在服务器上,因此可以直接引用它,而无需将MySql.Data.dll上传到bin文件夹。最新的可安装版本在此处提供:http://dev.mysql.com/downloads/connector/net/ )。

一旦在GAC中的服务器上安装了驱动程序,您只需要像这样在web.config中引用它,但是用您的Web托管公司版本替换Version = 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>
© www.soinside.com 2019 - 2024. All rights reserved.