3

首先,我想说的是,我已经尝试了几个小时来解决这个问题,方法是从有相同问题的人那里尝试了一堆不同的方法,但无济于事。在这一点上我很无知。

我正在使用我在 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 中设置 trust level="Full" 不是一个选项。
  • 我用来连接数据库的连接字符串不在我的 web.config 中,我想保持这种状态。
  • 使用 MySql 以外的任何东西都不是一种选择。

任何和所有的帮助表示赞赏!谢谢!

编辑

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

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

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

谢谢!

4

3 回答 3

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/

于 2013-11-19T12:00:33.950 回答
1

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

  1. 将安全性从 Web 配置更改为完全信任。
  2. 使用 bin 部署(复制到本地以获得 dll 属性)。
  3. 从程序集更改信任级别。还有很多其他人,但没有人在工作。

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

于 2013-11-13T05:13:17.560 回答
0

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

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

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

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

在 GAC 中的服务器上安装驱动程序后,您只需像这样在 web.config 中引用它,但将 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>
于 2013-11-28T18:23:33.560 回答