none
Fallo en la conexión remota MySql: error SocketPermission RRS feed

  • Pregunta

  • Hola.
    Tengo un programa en c# que realiza la conexión a una base de datos MySql mediante el Net Connector 6.0.4.
    La conexión en local funciona, pero cuando lanzo el ejecutable desde remoto, me da un error "SocketPermission".
    No existen problemas de acceso al ejecutable.
    El usuario ya tiene adjudicados los permisos pertinentes en MySql.

    He realizado un test de conexión mediante una aplicación de consola:

     Console.WriteLine("Start");
     string myConnString = "Server=192.168.1.100;Database=baseDatos;User=baseDatosUsuario;Password=password";
               
     MySqlConnection myConnection = new MySqlConnection(myConnString);
                myConnection.Open();
    
     Console.WriteLine("ServerVersion: " + myConnection.ServerVersion +"\nState: " + myConnection.State.ToString());
    
     myConnection.Close();
    
     Console.WriteLine("Completed!");
    



    Este es el error:

    --------------------------------------------------------------------------------------------------------------
    Excepción no controlada: MySql.Data.MySqlClient.MySqlException: Unable to connec
    t to any of the specified MySQL hosts. ---> System.Security.SecurityException: E
    rror de solicitud de permiso de tipo 'System.Net.SocketPermission, System, Versi
    on=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'.
       en System.Security.CodeAccessSecurityEngine.Check(Object demand, StackCrawlMa
    rk& stackMark, Boolean isPermSet)
       en System.Security.CodeAccessPermission.Demand()
       en System.Net.Sockets.Socket.CheckCacheRemote(EndPoint& remoteEP, Boolean isO
    verwrite)
       en System.Net.Sockets.Socket.BeginConnect(EndPoint remoteEP, AsyncCallback ca
    llback, Object state)
       en MySql.Data.Common.StreamCreator.CreateSocketStream(IPAddress ip, Boolean u
    nix)
       en MySql.Data.Common.StreamCreator.GetStream(UInt32 timeout)
       en MySql.Data.MySqlClient.NativeDriver.Open()
    Acción que generó el error:
    Demand
    El tipo del primer permiso que generó un error era:
    System.Net.SocketPermission
    El primer permiso que generó un error era:
    <IPermission class="System.Net.SocketPermission, System, Version=2.0.0.0, Cultur
    e=neutral, PublicKeyToken=b77a5c561934e089"
    version="1">
    <ConnectAccess>
    <ENDPOINT host="192.168.1.100"
    transport="Tcp"
    port="3306"/>
    </ConnectAccess>
    </IPermission>

    La petición era para:
    <IPermission class="System.Net.SocketPermission, System, Version=2.0.0.0, Cultur
    e=neutral, PublicKeyToken=b77a5c561934e089"
    version="1">
    <ConnectAccess>
    <ENDPOINT host="192.168.1.100"
    transport="Tcp"
    port="3306"/>
    </ConnectAccess>
    </IPermission>

    Conjunto concedido del ensamblado erróneo:
    <PermissionSet class="System.Security.PermissionSet"
    version="1">
    <IPermission class="System.Security.Permissions.EnvironmentPermission, mscorlib,
     Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
    version="1"
    Read="USERNAME"/>
    <IPermission class="System.Security.Permissions.FileDialogPermission, mscorlib,
    Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
    version="1"
    Unrestricted="true"/>
    <IPermission class="System.Security.Permissions.FileIOPermission, mscorlib, Vers
    ion=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
    version="1"
    Read="\\CHERIF-LAPTOP\TESTCONEXION\"
    PathDiscovery="\\CHERIF-LAPTOP\TESTCONEXION\"/>
    <IPermission class="System.Security.Permissions.IsolatedStorageFilePermission, m
    scorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
    version="1"
    Allowed="AssemblyIsolationByUser"
    UserQuota="9223372036854775807"
    Expiry="9223372036854775807"
    Permanent="True"/>
    <IPermission class="System.Security.Permissions.ReflectionPermission, mscorlib,
    Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
    version="1"
    Flags="ReflectionEmit"/>
    <IPermission class="System.Security.Permissions.SecurityPermission, mscorlib, Ve
    rsion=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
    version="1"
    Flags="Assertion, Execution, BindingRedirects"/>
    <IPermission class="System.Security.Permissions.UIPermission, mscorlib, Version=
    2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
    version="1"
    Unrestricted="true"/>
    <IPermission class="System.Security.Permissions.StrongNameIdentityPermission, ms
    corlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
    version="1"
    PublicKeyBlob="0024000004800000940000000602000000240000525341310004000001000100D
    973BDA91F71752C78294126974A41A08643168271F65FC0FB3CD45F658DA01FBCA75AC74067D18E7
    AFBF1467D7A519CE0248B13719717281BB4DDD4ECD71A580DFE0912DFC3690B1D24C7E1975BF7EED
    90E4AB14E10501EEDF763BFF8AC204F955C9C15C2CF4EBF6563D8320B6EA8D1EA3807623141F4B81
    AE30A6C886B3EE1"
    Name="MySql.Data"
    AssemblyVersion="6.0.4.0"/>
    <IPermission class="System.Security.Permissions.UrlIdentityPermission, mscorlib,
     Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
    version="1"
    Url="file://CHERIF-LAPTOP/TestConexion/MySql.Data.DLL"/>
    <IPermission class="System.Security.Permissions.ZoneIdentityPermission, mscorlib
    , Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
    version="1"
    Zone="Intranet"/>
    <IPermission class="System.Net.DnsPermission, System, Version=2.0.0.0, Culture=n
    eutral, PublicKeyToken=b77a5c561934e089"
    version="1"
    Unrestricted="true"/>
    <IPermission class="System.Drawing.Printing.PrintingPermission, System.Drawing,
    Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
    version="1"
    Level="DefaultPrinting"/>
    </PermissionSet>

    El ensamblado o AppDomain que generó el error:
    MySql.Data, Version=6.0.4.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d
    El método que generó el error era:
    System.IO.Stream CreateSocketStream(System.Net.IPAddress, Boolean)
    La zona del ensamblado que generó el error era:
    Intranet
    La dirección URL del ensamblado que generó el error era:
    file://CHERIF-LAPTOP/TestConexion/MySql.Data.DLL
       --- Fin del seguimiento de la pila de la excepción interna ---
       en MySql.Data.MySqlClient.NativeDriver.Open()
       en MySql.Data.MySqlClient.MySqlPool.GetPooledConnection()
       en MySql.Data.MySqlClient.MySqlPool.TryToGetDriver()
       en MySql.Data.MySqlClient.MySqlPool.GetConnection()
       en MySql.Data.MySqlClient.MySqlConnection.Open()
       en TestConexion.Program.Main(String[] args)
    --------------------------------------------------------------------------------------------------------------

    Gracias
    domingo, 10 de enero de 2010 0:35

Respuestas

  • Indico la solución por si a alguien le sirve.
    El sistema operativo cliente era un windows xp con service pack 2 y .net framework 3.5. Tras realizar una actualización del framework, el error dejó de aparecer.
    • Marcado como respuesta ch3r1f domingo, 10 de enero de 2010 22:47
    domingo, 10 de enero de 2010 22:46