Spec-Zone .ru
спецификации, руководства, описания, API
|
Приложения.NET работают под данным доверительным уровнем. Нормальные настольные приложения работают под полным доверием, в то время как веб-приложения, которые размещаются в совместно используемых средах, обычно выполняются под частичным доверительным уровнем (также известный как "среднее доверие"). Некоторые поставщики услуг хостинга размещают совместно использованные приложения в своих собственных пулах приложения и позволяют приложению работать под полным доверием, но эта конфигурация относительно редка. Соединитель/Сетевая поддержка для частичного доверия улучшился в течение долгого времени, чтобы упростить конфигурацию и процесс развертывания для поставщиков услуг хостинга.
Частичная доверительная поддержка Соединителя/Сети улучшилась быстро повсюду 6.5.x и 6.6.x версии. Последние улучшения действительно требуют некоторых изменений конфигурации в существующем развертывании. Вот сводка изменений для каждой версии.
Теперь можно установить MySql.Data.dll
библиотека в Глобальном кэше сборок
(GAC) как объяснено в Разделе
21.2.5.19.2, "Конфигурируя Частичное Доверие с Соединителем/Сетевой библиотекой, Установленным в
GAC", или в a bin
или lib
папка в
проекте или решении как объяснено в Разделе
21.2.5.19.3, "Конфигурируя Частичное Доверие с Соединителем/Сетевой библиотекой, Не Установленным в
GAC". Если библиотека не находится в GAC, единственным поддерживаемым протоколом является
TCP/IP.
Соединитель/Сеть 6.5 полностью позволяет нашему провайдеру работать в частичной доверительной среде, когда
библиотека устанавливается в Глобальном кэше сборок (GAC). Новое MySqlClientPermission
class, полученный из.NET DBDataPermission
class, помогает упростить установку разрешения.
Запускаясь с этих версий, Соединитель/Сеть может использоваться под частичным доверием, размещающим, который
был изменен, чтобы позволить использование сокетов для передачи. По умолчанию частичное доверие не включает
SocketPermission
. Сокеты использования соединителя/Сети, чтобы говорить с
сервером MySQL, таким образом, поставщик услуг хостинга должен создать новый доверительный уровень, который
является точным клоном частичного доверия, но этому добавили следующие полномочия:
System.Net.SocketPermission
System.Security.Permissions.ReflectionPermission
System.Net.DnsPermission
System.Security.Permissions.SecurityPermission
Версии соединителя/Сети до 5.0.8 и 5.1.3 не были совместимыми с частичным доверительным хостингом.
Если библиотека устанавливается в GAC, следует включать опцию соединения includesecurityasserts=true
в Вашей строке подключения. Это - новое требование с Соединителя/Сети 6.6.4.
Следующие выставочные шаги списка и фрагменты кода должны были запустить приложение Соединителя/Сети в частичной доверительной среде. В целях иллюстрации мы используем протокол Соединений Канала в этом примере.
Соединитель/Сеть установки: версия 6.6.1 или выше, или 6.5.4 или выше.
После установки библиотеки сделайте следующие изменения конфигурации:
В SecurityClasses
раздел, добавляет определение для MySqlClientPermission
class, включая версию, чтобы использовать.
<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
class:
<IPermission class="MySqlClientPermission" version="1" Unrestricted="true"/>
Отметьте: Эта конфигурация является наиболее обобщенным путем, который включает все ключевые слова.
Сконфигурируйте сервер MySQL, чтобы принять соединения канала, добавляя --enable-named-pipe
опция на командной строке. Если Вы нуждаетесь в
большей информации об этом, см. Раздел 2.3,
"Устанавливая MySQL на Microsoft Windows".
Подтвердите, что поставщик услуг хостинга установил Соединитель/Сетевую
библиотеку (MySql.Data.dll
) в GAC.
Дополнительно, поставщик услуг хостинга может избежать предоставлять полномочия
глобально при использовании нового MySqlClientPermission
class в
доверительных политиках. (Альтернатива должна глобально включить полномочиям 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
пространство имен
к Вашей странице серверного кода.
Определите строку подключения немного отличающимися способами в зависимости от версии Соединителя/Сети.
Только для 6.6.4 или позже: Чтобы использовать
соединения в любом веб-приложении, которое будет работать в Среднем доверии, добавьте новое
includesecurityasserts
опция к строке подключения. includesecurityasserts=true
это обращается с просьбой библиотеки
следующие полномочия когда требующийся: SocketPermissions
, ReflectionPermissions
, DnsPermissions
, SecurityPermissions
среди других, которых не предоставляют в Средних доверительных уровнях.
Для Соединителя/Сети 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()
Выполните программу. Это должно выполниться успешно, не требуя никакого специального кода или встречаясь с любыми проблемами безопасности.
Развертывая веб-приложение к Совместно используемой Размещенной среде, где эта среда конфигурируется, чтобы
запустить все их приложения.NET под частичным или средним доверительным уровнем, Вы не могли бы быть в
состоянии установить Соединитель/Сетевую библиотеку в GAC. Вместо этого Вы помещаете ссылку на библиотеку в
bin
или lib
папка в проекте или решении. В этом
случае Вы конфигурируете безопасность по-другому чем тогда, когда библиотека находится в GAC.
Соединитель/Сеть обычно используется приложениями, которые работают в средах Windows, где передача значения по умолчанию для протокола используется через сокеты или TCP/IP. Для этого протокола, чтобы работать необходимо, имеют необходимые полномочия сокета в веб-конфигурационном файле следующим образом:
Откройте средний доверительный веб-конфигурационный файл политики, который должен находиться под этой папкой:
%windir%\Microsoft.NET\Framework\{version
}\CONFIG\web_mediumtrust.config
Использовать Framework64
в пути вместо Framework
если Вы используете 64-разрядную установку платформы.
Расположитесь SecurityClasses
тег:
<SecurityClass Name="SocketPermission" Description="System.Net.SocketPermission, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
Прокрутите вниз и ищите следующий PermissionSet
:
<PermissionSet version="1" Name="ASP.Net">
Добавьте следующую внутреннюю часть это PermissionSet
:
<IPermission class="SocketPermission" version="1" Unrestricted="true" />
Эта конфигурация позволяет Вам использовать драйвер с протоколом Windows значения по умолчанию TCP/IP, не имея вопросов безопасности. Этот подход только поддерживает протокол TCP/IP, таким образом, невозможно использовать никакой другой тип соединения.
Кроме того, начиная с MySQLClientPermissions
class не добавляется к
средней доверительной политике, невозможно использовать это. Эта конфигурация является
минимумом, требуемым, чтобы работать с Соединителем/Сетью без GAC.