文档主页
MySQL Connector/NET 开发人员指南
相关文档 下载本手册
PDF (US Ltr) - 1.3Mb
PDF (A4) - 1.3Mb


MySQL Connector/NET 开发人员指南  /  ...  /  在 GAC 中安装 Connector/NET 库时配置部分信任

5.7.2 在 GAC 中安装 Connector/NET 库时配置部分信任

如果库安装在 GAC 中,您必须在连接字符串中包含连接选项 includesecurityasserts=true。这是从 MySQL Connector/NET 6.6.4 开始的新要求。

以下列表显示了在部分信任环境中运行 Connector/NET 应用程序所需的步骤和代码片段。为了说明目的,我们在本示例中使用管道连接协议。

  1. 安装 Connector/NET:版本 6.6.1 或更高版本,或 6.5.4 或更高版本。

  2. 安装库后,进行以下配置更改

    SecurityClasses 部分,为 MySqlClientPermission 类添加定义,包括要使用的版本。

    <configuration>
      <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" />

    向下滚动到 ASP.Net 部分

    <PermissionSet  class="NamedPermissionSet"  version="1"  Name="ASP.Net">

    MySqlClientPermission 类的详细配置添加新条目

    <IPermission class="MySqlClientPermission" version="1" Unrestricted="true"/>
    注意

    此配置是最通用的方式,它包含所有关键字。

  3. 通过在命令行上添加 --enable-named-pipe 选项,配置 MySQL 服务器以接受管道连接。如果您需要有关此方面的更多信息,请参阅 在 Microsoft Windows 上安装 MySQL

  4. 确认托管提供商已在 GAC 中安装了 Connector/NET 库 (MySql.Data.dll)。

  5. 可选地,托管提供商可以通过在信任策略中使用新的 MySqlClientPermission 类来避免全局授予权限。(另一种方法是全局启用权限 System.Net.SocketPermissionSystem.Security.Permissions.ReflectionPermissionSystem.Net.DnsPermissionSystem.Security.Permissions.SecurityPermission。)

  6. 使用 Visual Studio 2010 创建一个简单的 Web 应用程序。

  7. 在您的应用程序中添加对 MySql.Data.MySqlClient 库的引用。

  8. 编辑您的 web.config 文件,以便您的应用程序使用中等信任级别运行

    <system.web>
      <trust level="Medium"/>
    </system.web>
  9. MySql.Data.MySqlClient 命名空间添加到您的服务器代码页面。

  10. 定义连接字符串,具体方法取决于 Connector/NET 版本而略有不同。

    仅适用于 6.6.4 或更高版本: 要在将以中等信任级别运行的任何 Web 应用程序中使用连接,请将新的 includesecurityasserts 选项添加到连接字符串。 includesecurityasserts=true 使库在需要时请求以下权限:SocketPermissionsReflectionPermissionsDnsPermissionsSecurityPermissions 以及其他在中等信任级别中未授予的权限。

    适用于 Connector/NET 6.6.3 或更早版本: 连接字符串中不需要特殊的安全设置。

    MySqlConnectionStringBuilder myconnString = new MySqlConnectionStringBuilder("server=localhost;User Id=root;database=test");
    myconnString.PipeName = "MySQL55";
    myconnString.ConnectionProtocol = MySqlConnectionProtocol.Pipe;
    // Following attribute is a new requirement when the library is in the GAC.
    // Could also be done by adding includesecurityasserts=true; to the string literal
    // in the constructor above.
    // Not needed with Connector/NET 6.6.3 and earlier.
    myconnString.IncludeSecurityAsserts = true;
  11. 定义要使用的 MySqlConnection

    MySqlConnection myconn = new MySqlConnection(myconnString.ConnectionString);
    myconn.Open();
  12. 从您的表中检索一些数据

    MySqlCommand cmd = new MySqlCommand("Select * from products", myconn);
    MySqlDataAdapter da = new MySqlDataAdapter(cmd);
    DataSet1 tds = new DataSet1();
    da.Fill(tds, tds.Tables[0].TableName);
    GridView1.DataSource = tds;
    GridView1.DataBind();
    myconn.Close()
  13. 运行程序。它应该成功执行,无需任何特殊代码或遇到任何安全问题。