如果程式庫安裝在 GAC 中,您必須在連線字串中加入連線選項 includesecurityasserts=true。這是自 MySQL Connector/NET 6.6.4 起的新要求。
以下清單顯示在部分信任環境中執行 Connector/NET 應用程式所需的步驟和程式碼片段。為便於說明,我們在此範例中使用管道連線通訊協定。
安裝 Connector/NET:6.6.1 或更新版本,或 6.5.4 或更新版本。
安裝程式庫後,進行以下組態變更
在
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"/>注意此組態是包含所有關鍵字的最適一般化方式。
設定 MySQL 伺服器以接受管道連線,方法是在命令列中新增
--enable-named-pipe選項。如果您需要有關這方面的更多資訊,請參閱在 Microsoft Windows 上安裝 MySQL。確認託管提供者已將 Connector/NET 程式庫 (
MySql.Data.dll) 安裝在 GAC 中。或者,託管提供者可以使用信任原則中的新
MySqlClientPermission類別,避免以全域方式授與權限。(另一種方法是以全域方式啟用權限System.Net.SocketPermission、System.Security.Permissions.ReflectionPermission、System.Net.DnsPermission和System.Security.Permissions.SecurityPermission。)使用 Visual Studio 2010 建立簡單的 Web 應用程式。
在應用程式中新增
MySql.Data.MySqlClient程式庫的參考。編輯
web.config檔案,使您的應用程式以中度信任層級執行<system.web> <trust level="Medium"/> </system.web>將
MySql.Data.MySqlClient命名空間新增至您的伺服器程式碼頁面。定義連線字串,依據 Connector/NET 版本而略有不同。
僅適用於 6.6.4 或更新版本:若要在任何將以中度信任執行的 Web 應用程式內使用連線,請將新的
includesecurityasserts選項新增至連線字串。includesecurityasserts=true會使程式庫在需要時要求以下權限:SocketPermissions、ReflectionPermissions、DnsPermissions、SecurityPermissions以及其他未在中度信任層級授與的權限。適用於 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;定義要使用的
MySqlConnectionMySqlConnection myconn = new MySqlConnection(myconnString.ConnectionString); myconn.Open();從表格擷取一些資料
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()執行程式。它應該順利執行,無需任何特殊程式碼,也不會遇到任何安全性問題。