none
Retornar OracleConnection RRS feed

  • Pregunta

  • Ufffffff,
    Hola amigos, ya creo que algunos piensen en sacarme del foro por hincha huevos, solo pido disculpas por si molesto un poco, sobre los 2 anteriores post, ya resolví los problemas, como?, no lo sé pero lo logré, mi problema ahora radica en que en mi COM+ debo retornar un OracleConnection desde la funcion conectar, pero no se puede, así mismo me pasa con los Command, OracleDataReader, etc..., me podrían ayudar por ultima vez, les adjunto el codigo de la com y del cliente.
    De antemano muchas gracias. y además les envío el mensaje que me muestra, saludos.

    COMPONENTE:
    'Librerías Oracle
    Imports System.Data.OracleClient
    Imports System.Data.OracleClient.OracleType

    'Librerías Servicios
    Imports System.EnterpriseServices
    Imports System.Runtime.InteropServices
    Imports System.Runtime.InteropServices.ComTypes

    'Información Assemblyes
    <Assembly: ApplicationName("COMTNET")>
    <Assembly: ApplicationAccessControl(False)>
    <Assembly: ApplicationActivation(ActivationOption.Server)>
    <Assembly: ApplicationID("ca3c7450-e9c2-4680-8f97-8f3f24521fdf")>

    <AutomationProxy(False)> _
    <MustRunInClientContext(True)> _
    <System.Serializable()> _
    <JustInTimeActivation(True)> _
    <ComponentAccessControl(True)> _
    <Microsoft.VisualBasic.ComClass()> _
    <Transaction(TransactionOption.Required)> _
    <MonitoringDescription("Monitor")> _
    <AttributeUsage(AttributeTargets.All)> _
    <ObjectPooling(MinPoolSize:=1, MaxPoolSize:=100, CreationTimeout:=2000)> _
    Public Class COMTrans
        Inherits ServicedComponent
        Dim ocConecction As OracleConnection
        Dim intEstadoConexion As Integer
        <AutoComplete(True)> _
        <ComVisible(True)> _
        Public Function Conectar(ByVal strUserId As String, _
                                            ByVal strPassword As String, _
                                            ByVal strDataSource As String) As OracleConnection

            Try
                ocConecction = New OracleConnection
                ocConecction.ConnectionString = "Data source=" & strDataSource & "; User Id=" & strUserId & ";pASSWORD=" & strPassword
                ocConecction.Open()
                ContextUtil.SetComplete()
            Catch ex As OracleException
                ContextUtil.SetAbort()
            Finally
                intEstadoConexion = ocConecction.State
                ''''''''ServiceDomain.Leave()
            End Try
            Return ocConecction
        End Function



    CLIENTE:
        Dim objCom As New COMTNET.COMTrans
    Dim objOracle As OracleConnection = objCom.Conectar("DESA", "DESA", "DESA")
            Debug.WriteLine(objOracle.State)

    MENSAJE ERROR:

    Este proxy remoto no tiene un receptor de canal, lo que significa que el servidor no tiene canales registrados de servidor que escuchen, o que esta aplicación no tiene un canal de cliente adecuado para hablar con el servidor.


    La verdad no me cruje, y si pudiesen poner un pequeño ejemplo de como hacerlo, se los agradecería mucho, la verdad la información q he visto no me ha servido mucho, por eso apelo a vuestro conocimiento.

    Saludos y gracias.
    jueves, 6 de septiembre de 2007 20:48

Todas las respuestas

  •  

    Hola que tal te queria preguntar si pudistes resolver este tu problema?
    martes, 15 de abril de 2008 22:34
  • Hola!

    Yo también estoy interesada en la solución de este problema.

    Tengo un webservice y deseo que uno de sus métodos retorne un objeto OracleConnection.
    Probé con serialización binaria, pero me dice que la clase OracleConnection no es serializable.
    Alguna alternativa?

    Gracias!!!
    martes, 22 de julio de 2008 20:33
  • Hola,

     

    prueba esto...esto funciona como cualquier otro tipo de origen datos, solo reemplaza el tipo OLEDB a ORACLE

     

     

    Imports System.Data.OleDb
    Imports System.Data

    Public Class c_conexion
        Private cn As New OleDbConnection
     
        Dim cnnString As String = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & App_Path() & "/Semanario.mdb"
      
        Public Function App_Path() As String
            Return System.AppDomain.CurrentDomain.BaseDirectory()
        End Function

        Sub New()
            cn.ConnectionString = cnnString
        End Sub

        Public ReadOnly Property p_cn() As OleDbConnection
            Get
                Return cn
            End Get
        End Property
      
    End Class

     

    --------------------------

    LO INVOCAS DE ESTA FORMA EN OTRAS CLASES

     

        Private cn As New c_conexion
        Dim da As OleDbDataAdapter
        Dim com As OleDbCommand
        Dim dt As DataTable
        Dim query As String
        Dim n As Integer


        Public Function Insertar(ByVal p_bol_id As Integer, ByVal p_bol_nombre As String, _
        ByVal p_bol_hor_ini As String, ByVal p_bol_correos_xenvio As Integer, ByVal p_bol_tiempo_envio As Integer, _
        ByVal p_bol_contenido As String, ByVal p_comex_id_user As Integer)

            query = "INSERT INTO TB_BOLETIN(bol_id,bol_nombre,bol_hor_ini,bol_correos_xenvio,bol_tiempo_envio, bol_contenido, comex_id_user)" & _
                    "VALUES('" & p_bol_id & "','" & p_bol_nombre & "','" & p_bol_hor_ini & "'," & p_bol_correos_xenvio & "," & p_bol_tiempo_envio & ",'" & p_bol_contenido & "','" & p_comex_id_user & "')"
            com = New OleDbCommand(query, cn.p_cn)
            cn.p_cn.Open()
            n = com.ExecuteNonQuery()
            cn.p_cn.Close()
            Return n
        End Function

    martes, 16 de diciembre de 2008 20:04