如果库安装在 GAC 中,则必须includesecurityasserts=true
在连接字符串中包含连接选项。这是 MySQL Connector/NET 6.6.4 的新要求。
以下列表显示了在部分信任环境中运行连接器/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"/>
笔记此配置是包含所有关键字的最通用的方式。
--enable-named-pipe
通过在命令行上 添加选项,将 MySQL 服务器配置为接受管道连接。如果您需要有关此的更多信息,请参阅在 Microsoft Windows 上安装 MySQL。确认托管服务提供商已
MySql.Data.dll
在 GAC 中安装了连接器/NET 库 ( )。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
到您的服务器代码页。根据连接器/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;
定义
MySqlConnection
要使用的:MySqlConnection 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()
运行程序。它应该成功执行,不需要任何特殊代码或遇到任何安全问题。