.net 4.0 .NET 4.0中等信任级别和MYSQL连接

.net 4.0 .NET 4.0中等信任级别和MYSQL连接,.net-4.0,mysql-connector,medium-trust,trust,full-trust,.net 4.0,Mysql Connector,Medium Trust,Trust,Full Trust,我有一个问题,我认为一个正确的答案会帮助很多有同样问题的人,因为这是一个常见的问题,而且没有很好的答案 问题在于IIS中的“中等信任级别”配置。几个月前,我在本地计算机上用“完全信任级别”配置对我的网站进行了编码,当我将其上载到主机时,该配置工作正常。 但我的托管公司有一个关于信任级别的新规则,现在他们只允许“中等信任级别” 我的网页现在不工作了。我试着修改我的网站,但我不知道该怎么做。当然很多人也不知道。。 所以我会告诉你到目前为止我做了什么,你能帮我吗 首先,我试图改变我的本地配置 C:\W

我有一个问题,我认为一个正确的答案会帮助很多有同样问题的人,因为这是一个常见的问题,而且没有很好的答案

问题在于IIS中的“中等信任级别”配置。几个月前,我在本地计算机上用“完全信任级别”配置对我的网站进行了编码,当我将其上载到主机时,该配置工作正常。 但我的托管公司有一个关于信任级别的新规则,现在他们只允许“中等信任级别”

我的网页现在不工作了。我试着修改我的网站,但我不知道该怎么做。当然很多人也不知道。。 所以我会告诉你到目前为止我做了什么,你能帮我吗

首先,我试图改变我的本地配置

C:\Windows\Microsoft.NET\Framework\v4.0.30319\Config

打开我的网络配置文件,并更改

<trust level="Full" originUrl="" />


之后,为了进行测试,我用ASP默认模板创建了一个新网站。它正常工作。然后我添加Mysql.dll作为引用,以连接到Mysql数据库。但该堆栈引发了安全异常:

[SecurityException:请求类型的权限 'System.Security.Permissions.SecurityPermission,mscorlib, 版本=4.0.0.0,区域性=中性,PublicKeyToken=b77a5c561934e089' 失败。]MySql.Data.MySqlClient.MySqlTrace..cctor()+0

那现在呢?我们不能再连接mysql数据库了吗?或者有解决方案吗?我从未更改过网站项目文件夹中的webconfig文件。我需要在此处更改什么吗?
请帮帮我,伙计们?

大家好,我终于找到了解决问题的办法,所以我会尽力帮助那些有同样问题的人。部分信任和中等信任水平是一样的,请注意

我在这个问题上的第一步是绝对必要的。别忘了将你的信任级别改为“中等”。之后,您需要从中获取正确的.Net连接器版本 请小心选择主机提供商使用的版本。例如,我的托管公司正在使用Mysql Connector Net 6.5.4

其次,您需要配置您的Project webconfig文件,该文件将使用您的.dll文件,并在中等信任级别下获得必要的权限

您需要在
下面添加类似的内容

 <mscorlib>
    <security>
      <policy>
        <PolicyLevel version="1">
          <SecurityClasses>
            <SecurityClass Name="MySqlClientPermission" Description="MySql.Data.MySqlClient.MySqlClientPermission, MySql.Data, Version=6.6.4.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d"/>
          </SecurityClasses>
        </PolicyLevel>
      </policy>
    </security>
  </mscorlib>
您需要在

C:\Windows\Microsoft.NET\Framework\v4.0.30319\Config
<SecurityClasses>
  <securityclass Name="MySqlClientPermission" Description="MySql.Data.MySqlClient.MySqlClientPermission, MySql.Data, Version=6.5.4.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" />



下面是我如何解决一个类似的问题,让MySql在一个中等信任的环境中工作

我们尝试了所有的方法来阅读这本“书”,但根本无法让它发挥作用

结果证明MySql connecter版本是关键询问您的网络托管公司,他们在GAC的服务器上安装了什么版本的MySqlClient

(GAC只是指将库安装在服务器上,以便直接引用,而无需将MySql.Data.dll上载到bin文件夹。最新的可安装版本可在此处获得:)

在GAC的服务器上安装驱动程序后,您只需在web.config中引用它,如下所示,但将版本=6.6.5.0替换为您的web主机公司版本


C:\Windows\Microsoft.NET\Framework\v4.0.30319\Config
<SecurityClasses>
  <securityclass Name="MySqlClientPermission" Description="MySql.Data.MySqlClient.MySqlClientPermission, MySql.Data, Version=6.5.4.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" />
<NamedPermissionSets>
  <iPermission class = "MysqlClientPermission" version = "1">  
    <add connectionString = "Server =; Database =;"  restrictions = "User =; User Id =; Password =; Port =; Pooling =;" KeyRestrictionBehavior = "(Prevent Usage | Allow Only)" /> 
  </iPermission>
<compilation debug="true" targetFramework="4.0">
  <assemblies>
    <add assembly="MySql.Data, Version=6.6.5.0, Culture=neutral, PublicKeyToken=C5687FC88969C44D"/>
  </assemblies>    
</compilation>