2

部分的に信頼できる環境でMySql.Dataに問題があります。MySql.DataをGACに追加しました(mysql.comサイトからMSIを使用してインストールします)。あなたがここで見ることができるように:

>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

私の信頼レベルでは、これらは次のとおりです。

<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を無制限に設定しようとしましたが、これは役に立ちませんでした。

あなたはなにか考えはありますか?

4

2 に答える 2

3

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/にも投稿されているように

于 2012-03-28T10:28:49.643 に答える
0

コードが MySqlConnection を開くたびに、MySql クライアントは接続文字列で MySqlClientPermission を要求します。MySql クライアント アセンブリが GAC にあるかどうかに関係なく、アプリケーションにはこのアクセス許可が必要です。

http://englishebook.info/1/software-to-download/656-running-connectornet-65-inside-medium-trust-levelにリストされているアクセス許可(質問で言及したもの) は、 ASP.NET アプリケーションで必要なものではなく、MySql クライアント アセンブリで必要です。アプリケーションが MySql を使用できるようにするには、アプリケーションに MySqlClientPermission を付与する必要があります。

于 2012-03-21T12:49:47.710 に答える