文件首頁
MySQL Connector/NET 開發人員指南
相關文件 下載本手冊
PDF (美式信紙) - 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. 設定 MySQL 伺服器以接受管道連線,方法是在命令列中新增 --enable-named-pipe 選項。如果您需要有關這方面的更多資訊,請參閱在 Microsoft Windows 上安裝 MySQL

  4. 確認託管提供者已將 Connector/NET 程式庫 (MySql.Data.dll) 安裝在 GAC 中。

  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. 執行程式。它應該順利執行,無需任何特殊程式碼,也不會遇到任何安全性問題。