C# GAC中的MySql.Data,仍然是SecurityException

C# GAC中的MySql.Data,仍然是SecurityException,c#,mysql,mysql-connector,securityexception,partial-trust,C#,Mysql,Mysql Connector,Securityexception,Partial Trust,我在部分受信任的环境中使用MySql.Data有问题。 我已经将MySql.Data添加到GAC中(通过从MySql.com站点用MSI安装)。正如你在这里看到的: >gacutil /l | grep -i mysql MySql.Data, Version=6.5.4.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d, processorArchitecture=MSIL MySql.Data.CF, Version=6.

我在部分受信任的环境中使用MySql.Data有问题。 我已经将MySql.Data添加到GAC中(通过从MySql.com站点用MSI安装)。正如你在这里看到的:

>gacutil /l | grep -i mysql
  MySql.Data, Version=6.5.4.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d,
 processorArchitecture=MSIL
  MySql.Data.CF, Version=6.5.4.0, Culture=neutral, PublicKeyToken=c5687fc88969c4
4d, processorArchitecture=MSIL
  MySql.Data.Entity, Version=6.5.4.0, Culture=neutral, PublicKeyToken=c5687fc889
69c44d, processorArchitecture=MSIL
  MySql.Web, Version=6.5.4.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d,
processorArchitecture=MSIL

>
我已将以下内容添加到我的web.config中:

<configuration>
    <system.web>
      <trust level="Vevida"/>
      <compilation debug="true" targetFramework="4.0">
        <assemblies>
          <add assembly="MySql.Data, Version=6.5.4.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d"/>
        </assemblies>
      </compilation>
    </system.web>    
</configuration>
据我在文档中看到的,这就足够了。还尝试将SecurityPermission和ReflectionPermission设置为无限制,但这没有帮助


您有什么想法吗?

每次代码打开MySqlConnection时,MySql客户端都会对连接字符串请求MySqlClientPermission。无论MySql客户端程序集是否在GAC中,应用程序都必须具有此权限


在(您在问题中提到的)中列出的权限是MySql客户端程序集所需的权限,而不是ASP.NET应用程序所需的权限。要允许您的应用程序使用MySql,您需要授予它MySqlClientPermission。

必须将MySqlClientPermission作为SecurityClass和IPermission添加到介质信任配置中。我的web_mediumtrust.config添加内容是:

<SecurityClass Name="MySqlClientPermission"
  Description="MySql.Data.MySqlClient.MySqlClientPermission,
  MySql.Data, Version=6.5.4.0, Culture=neutral,
  PublicKeyToken=c5687fc88969c44d"
/>

<IPermission class="MySqlClientPermission" version="1">
  <add connectionString="Server=;Database=;User=;Password=;Port=;Pooling=;"
    restrictions=""
    KeyRestrictionBehavior="PreventUsage" />
</IPermission>


那么我应该在我的信任配置中添加MySqlClientPermission吗?我不明白。我的主机提供商已经向我发送了他们的配置文件,我可以在那里通过这个程序集打开连接,但我在他们的配置文件中没有看到这个类。今天晚些时候我会尝试,我想我做错了什么,因为当我在信任文件中添加MySqlClientPermission时,我得到的只是错误。我应该在哪里补充什么?找不到关于此的任何信息除此之外,我发现MySqlClientPermission只是其他4个权限的“短版本”,我已准备好设置您在哪里发现它是“其他4个权限的短版本”?至少在6.5.4.0中,它看起来是一个普通的CAS许可。它是System.Data.Common.DBDataPermission的子类,就像System.Data.SqlClient.SqlClientPermission一样。或者,宿主提供程序可以通过在信任策略中使用新的MySqlClientPermission类来避免全局授予权限。(另一种方法是全局启用权限System.Net.SocketPermission、System.Security.permissions.ReflectionPermission、System.Net.DnsPermission和System.Security.permissions.SecurityPermission。)
<SecurityClass Name="MySqlClientPermission"
  Description="MySql.Data.MySqlClient.MySqlClientPermission,
  MySql.Data, Version=6.5.4.0, Culture=neutral,
  PublicKeyToken=c5687fc88969c44d"
/>

<IPermission class="MySqlClientPermission" version="1">
  <add connectionString="Server=;Database=;User=;Password=;Port=;Pooling=;"
    restrictions=""
    KeyRestrictionBehavior="PreventUsage" />
</IPermission>