我在部分受信任的环境中遇到了 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>
但我仍然得到以下异常:
Exception Details: System.Security.SecurityException: Request for the permission of type 'MySql.Data.MySqlClient.MySqlClientPermission, MySql.Data, Version=6.5.4.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d' failed.
当我尝试打开连接时会抛出它。
我不确定我可以检查更多。根据 MySql 文档,我至少需要以下权限:System.Net.SocketPermission、System.Security.Permissions.ReflectionPermission、System.Net.DnsPermission 和 System.Security.Permissions.SecurityPermission
在我的信任级别中,我有这些:
<IPermission
class="SocketPermission"
version="1"
Unrestricted="true">
</IPermission>
<IPermission
class="ReflectionPermission"
version="1"
Flags="RestrictedMemberAccess"/>
<IPermission
class="DnsPermission"
version="1"
Unrestricted="true"/>
<IPermission
class="SecurityPermission"
version="1"
Flags="Execution,ControlPrincipal,ControlThread,SerializationFormatter"/>
据我在文档中看到的,这就足够了。还尝试将 SecurityPermission 和 ReflectionPermission 设置为不受限制,这没有帮助。
你有什么想法?