5.7.2 Настройка частичного доверия с установленной библиотекой Connector/NET в GAC
Если библиотека установлена в GAC, необходимо включить параметр подключения includesecurityasserts=true в строке подключения. Это новое требование, начиная с MySQL Connector/NET 6.6.4.
В следующем списке показаны шаги и фрагменты кода, необходимые для запуска приложения Connector/NET в среде частичного доверия. В качестве примера в этом примере используется протокол подключений через Pipe.
Установите 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 для приема подключений через pipe, добавив параметр
--enable-named-pipeв командной строке. Для получения дополнительной информации см. .Убедитесь, что провайдер хостинга установил библиотеку Connector/NET (
MySql.Data.dll) в GAC.По желанию, провайдер хостинга может избежать предоставления разрешений глобально, используя новый класс
MySqlClientPermissionв политиках доверия. (Альтернативой является глобальное разрешение правSystem.Net.SocketPermission,System.Security.Permissions.ReflectionPermission,System.Net.DnsPermissionиSystem.Security.Permissions.SecurityPermission).Создайте простое веб-приложение с помощью Visual Studio 2010.
Добавьте ссылку в вашем приложении на библиотеку
MySql.Data.MySqlClient.-
Измените файл
web.config, чтобы ваше приложение работало с уровнем доверия «Средний»:<system.web> <trust level="Medium"/> </system.web>
Добавьте пространство имен
MySql.Data.MySqlClientв страницу кода сервера.-
Определите строку подключения, несколько отличающуюся в зависимости от версии Connector/NET.
Только для 6.6.4 и более поздних версий: Для использования подключений внутри любого веб-приложения, которое будет работать со средним уровнем доверия, добавьте новый параметр
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() Запустите программу. Она должна успешно завершиться без необходимости в специальном коде или возникновения проблем с безопасностью.
© 2025 Oracle
Licensed under the GPLv2 License.