2012-03-20 7 views
2

У меня проблема с MySql.Data в частичной доверенной среде. Я добавил MySql.Data к GAC (установив его с MSI с сайта mysql.com). Как вы можете увидеть здесь:MySql.Data в GAC, еще SecurityException

>gacutil /l | grep -i mysql 
    MySql.Data, Version=6.5.4.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d, 
processorArchitecture=MSIL 
    MySql.Data.CF, Version=6.5.4.0, Culture=neutral, PublicKeyToken=c5687fc88969c4 
4d, processorArchitecture=MSIL 
    MySql.Data.Entity, Version=6.5.4.0, Culture=neutral, PublicKeyToken=c5687fc889 
69c44d, processorArchitecture=MSIL 
    MySql.Web, Version=6.5.4.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d, 
processorArchitecture=MSIL 

> 

Я добавить следующее к моему web.config:

<configuration> 
    <system.web> 
     <trust level="Vevida"/> 
     <compilation debug="true" targetFramework="4.0"> 
     <assemblies> 
      <add assembly="MySql.Data, Version=6.5.4.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d"/> 
     </assemblies> 
     </compilation> 
    </system.web>  
</configuration> 

Но я до сих пор получаю следующее исключение: Exception Details: System.Security.SecurityException: Request for the permission of type 'MySql.Data.MySqlClient.MySqlClientPermission, MySql.Data, Version=6.5.4.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d' failed.

Он брошенное когда Я пытаюсь открыть соединение.

Я не уверен, что я могу проверить больше. Согласно документации MySql, мне нужно по крайней мере, следующие разрешения: System.Net.SocketPermission, System.Security.Permissions.ReflectionPermission, System.Net.DnsPermission и System.Security.Permissions.SecurityPermission

В моих уровень доверия I:

<IPermission 
    class="SocketPermission" 
    version="1" 
    Unrestricted="true"> 
</IPermission> 
<IPermission 
    class="ReflectionPermission" 
    version="1" 
    Flags="RestrictedMemberAccess"/> 
<IPermission 
    class="DnsPermission" 
    version="1" 
Unrestricted="true"/> 
<IPermission 
    class="SecurityPermission" 
    version="1" 
    Flags="Execution,ControlPrincipal,ControlThread,SerializationFormatter"/> 

Насколько я могу видеть в документации, этого достаточно. Также попытался установить SecurityPermission и ReflectionPermission на неограниченное, это не помогло.

Есть ли у вас идеи?

ответ

2

MySqlClientPermission должен быть добавлен в конфигурацию доверия доверия как SecurityClass и IPermission. Моя web_mediumtrust.config добавление:

<SecurityClass Name="MySqlClientPermission" 
    Description="MySql.Data.MySqlClient.MySqlClientPermission, 
    MySql.Data, Version=6.5.4.0, Culture=neutral, 
    PublicKeyToken=c5687fc88969c44d" 
/> 

<IPermission class="MySqlClientPermission" version="1"> 
    <add connectionString="Server=;Database=;User=;Password=;Port=;Pooling=;" 
    restrictions="" 
    KeyRestrictionBehavior="PreventUsage" /> 
</IPermission> 

Как также размещены на http://www.saotn.org/mysql-connector-net-6-5-partial-trust/

0

Каждый раз, когда ваш код открывает MySqlConnection, клиент MySql запрашивает MySqlClientPermission в строке подключения. Ваше приложение должно иметь это разрешение, независимо от того, собраны ли клиентские сборки MySql в GAC или нет.

Права, перечисленные в http://englishebook.info/1/software-to-download/656-running-connectornet-65-inside-medium-trust-level (те, о которых вы упоминали в своем вопросе), нужны для клиентских сборок MySql, а не тех, которые необходимы вашему приложению ASP.NET. Чтобы ваше приложение могло использовать MySql, вам нужно предоставить его MySqlClientPermission.

+0

Так что я должен добавить MySqlClientPermission в моей конфигурации доверия? Я этого не понимаю. Мой хостинг-провайдер отправил мне свою конфигурацию, где я могу открыть соединение через эту сборку, и я не вижу этот класс в их конфигурации. Я попробую это позже в этот день –

+0

Я думаю, что я делаю что-то неправильно, потому что, когда я добавляю MySqlClientPermission в свой файл доверия, все, что у меня есть, это ошибки. Где и что добавить? Не могу найти ничего об этом –

+0

В дополнение к этому, я нахожу, что MySqlClientPermission - это просто «короткая версия» из остальных 4 разрешений, я уже установлен –

 Смежные вопросы

  • Нет связанных вопросов^_^