Lo primero, ¿qué tal? bueno, os dejo este mensaje porque tengo un problemilla con una aplicación web de VS2005.net que me está volviendo loco y no sé por donde atajar el problema.
Os cuento...
Tengo una aplicación web programada en vb.net 2005 que ataca a una BBDD de Oracle 9, hasta ahí bien, me he creado mi servicio web para conectar, etc... ejecuto la aplicación desde VS y todo perfecto, ni un fallo, el problema viene cuando la subo al servidor (Windows Server 2003) con IIS6, la configuro, la subo, voy a ejecutar y bien hasta que va a recoger datos de la base de datos con la función que os detallo más adelante y... meeecccc, error!!!:
Exception Details: System.NullReferenceException: Object reference not set to an instance of an object.
La función es la siguiente:
Cita:
Protected Sub cmdAceptar_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles cmdAceptar.Click
' Valida que haya introducido el DNI
If txtDNI.Text = "" Then
Response.Write(pfs_MessageBox(1, "Ha de introducir un DNI válido"))
Else
'Valida que el DNI es válido
Dim drOra As OracleDataReader
Dim dsDatos As DataSet = New DataSet()
Dim sQuery As String
sQuery = "SELECT * FROM CIUDADANOS WHERE DNI='" & UCase(txtDNI.Text) & "'"
drOra = pfs_RecuperarRegistros(sQuery, dsDatos)
If drOra.HasRows Then
Session("sDNI") = UCase(txtDNI.Text)
Session("sIDCiudadano") = drOra.Item("ID")
' Hay que redirigir a la página de datos básicos
If Session("sURL") = "" Then
Session("sURL") = "~/emprendedores/datosbasicos.aspx"
End If
Response.Redirect(Session("sURL"))
Else
' Redirige a la pantalla de datos básicos de emprendedores con el DNI introducido
' para que el usuario lo dé de alta
Response.Redirect("~/emprendedores/datosbasicos.aspx?dni=" & UCase(txtDNI.Text))
End If
End If
End Sub
Esa es una, y la otra para recoger los datos es la siguiente:
Public Function pfs_RecuperarRegistros(ByVal sQuery As String, ByRef dsDatos As DataSet) As OracleDataReader
Dim Conn As OracleConnection
Dim dr As OracleDataReader
Dim cmd As New OracleCommand
'Cadena de conexion a la base de datos
Conn = New OracleConnection("Data Source=OEMALCOB.DATA.ES;Persist Security Info=True;User ID=SA;Password=SA;Unicode=True")
cmd.CommandType = CommandType.Text
cmd.CommandText = sQuery
cmd.Connection = Conn
Try
' Abrimos la conexión a la bbdd
Conn.Open()
dr = cmd.ExecuteReader()
dr.Read()
Return dr
Catch ex As Exception
Response.Write(pfs_MessageBox(1, ex.Message.ToString()))
End Try
End Function
Protected Sub cmdAceptar_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles cmdAceptar.Click
' Valida que haya introducido el DNI
If txtDNI.Text = "" Then
Response.Write(pfs_MessageBox(1, "Ha de introducir un DNI válido"))
Else
'Valida que el DNI es válido
Dim drOra As OracleDataReader
Dim dsDatos As DataSet = New DataSet()
Dim sQuery As String
sQuery = "SELECT * FROM CIUDADANOS WHERE DNI='" & UCase(txtDNI.Text) & "'"
drOra = pfs_RecuperarRegistros(sQuery, dsDatos)
If drOra.HasRows Then
Session("sDNI") = UCase(txtDNI.Text)
Session("sIDCiudadano") = drOra.Item("ID")
' Hay que redirigir a la página de datos básicos
If Session("sURL") = "" Then
Session("sURL") = "~/emprendedores/datosbasicos.aspx"
End If
Response.Redirect(Session("sURL"))
Else
' Redirige a la pantalla de datos básicos de emprendedores con el DNI introducido
' para que el usuario lo dé de alta
Response.Redirect("~/emprendedores/datosbasicos.aspx?dni=" & UCase(txtDNI.Text))
End If
End If
End Sub
Esa es una, y la otra para recoger los datos es la siguiente:
Public Function pfs_RecuperarRegistros(ByVal sQuery As String, ByRef dsDatos As DataSet) As OracleDataReader
Dim Conn As OracleConnection
Dim dr As OracleDataReader
Dim cmd As New OracleCommand
'Cadena de conexion a la base de datos
Conn = New OracleConnection("Data Source=OEMALCOB.DATA.ES;Persist Security Info=True;User ID=SA;Password=SA;Unicode=True")
cmd.CommandType = CommandType.Text
cmd.CommandText = sQuery
cmd.Connection = Conn
Try
' Abrimos la conexión a la bbdd
Conn.Open()
dr = cmd.ExecuteReader()
dr.Read()
Return dr
Catch ex As Exception
Response.Write(pfs_MessageBox(1, ex.Message.ToString()))
End Try
End Function
¿Alguien tiene idea de cómo solucionar esa excepción en tiempo de ejecución en el servidor o de por qué se produce?
He probado a reinstalar el IIS y posteriormente el FrameWork 2.0. El servidor donde he alojado la aplicación tiene instalado un servidor Oracle 9, por lo que entiendo (no se) que no debe ser problema de conexión con Oracle porque de hecho, lo ejecuto en mi máquina y funciona perfectamente (conectando la BBDD desde el server).
Bueno, desde ya, muchas gracias chicos!!!
Un saludo.