Cuando un principiante comienza a porgramar con ASP.NET
con Visual Studio suele quedarse atascado en errores que son típicos y
fácilmente solucionables. Mi objetivo es hacer una pequeña lista de estos
errores (al menos los más famosos) para tenerlos mas o menos reunidos y así
permitir una curva de aprendizaje más rápida para quien comience a desarrollar
con asp.net con Visual Studio.
Normalmente después de hacer varias modificaciones en el
código, ejecutamos y obtenemos un error bastante desconcertante.
1º Compilation error:
Aunque en principio desconcierta , este es el típico error
que se resuelve haciendo CleanSolution y después Build Solution
Hecho esto, si no sale ningún error de compilación, nuestro programa se deberá ejecutar sin
problemas.
2º NullreferenceException was unhandled by user code
Nos dice que la referencia del objeto no está establecida
como una instancia del objeto.
En nuestro caso este error da con el siguiente código
fuente, en la línea en negrita:
FirmasNacional.Firmas
= FirmasArray
FirmasInternacional.Firmas = FirmasArray
El código está definido
del siguiente modo:
Definición de la
propiedad privada FirmasArray
Private ReadOnly Property
FirmasArray() As DataAccess.Firma()
Get
If IsNothing(mFirmasArray) Then
mFirmasArray = DataAccess.CargarFirmas()
End
If
Return mFirmasArray
End Get
End Property
Definición
de la propiedad pública Firmas
Public Property Firmas() As
DataAccess.Firma()
Get
If
IsNothing(mFirmas) Then Return mFirmasVacias
Return mFirmas
End Get
Set(ByVal Value As DataAccess.Firma())
mFirmas =
Value
End Set
End Property
Definición
de FirmasNacional
#Region
"Controles"
Protected
FirmasOrdenComision As CustomControl.SelectorFirma
Protected FirmasNacional
As CustomControl.SelectorFirma
Protected FirmasInternacional
As
CustomControl.SelectorFirma
#End Region
Se soluciona poniendo delante el operador New
#Region "Controles"
Protected
FirmasOrdenComision As New
CustomControl.SelectorFirma
Protected FirmasNacional
As New
CustomControl.SelectorFirma Protected FirmasInternacional As New CustomControl.SelectorFirma
#End Region
3º SqlNullValueException was unhandled by user code
Data is Null. This method or property
cannot be called on Null values.
Esta pantalla de error se muestra cuando el código ejecuta la
linea pintada de rojo. Falla por que viene el valor a Null.
Private Function MostrarDatos(ByRef
objclsDatos As clsDatos) As Boolean
Dim
objListItem As
System.Web.UI.WebControls.ListItem
Dim strAux As String
lblNif.InnerText = clsUtilidades.QuitarFormatoNIF(clsTools.UserFormat(objclsDatos.NIF,
"",
clsTools.TypeDataCode.Data_String))
txtNombre.Value =
Trim(CType(objclsDatos.Nombre.Value, String))
Se soluciona añadiendo If Not objclsDatos.Nombre.IsNull Then
Se ha remarcado en negrita.
Private Function MostrarDatos(ByRef
objclsDatos As clsDatos) As Boolean
Dim
objListItem As
System.Web.UI.WebControls.ListItem
Dim strAux As String
lblNif.InnerText = clsUtilidades.QuitarFormatoNIF(clsTools.UserFormat(objclsTercero.NIF,
"",
clsTools.TypeDataCode.Data_String))
If Not objclsDatos.Nombre.IsNull Then
txtNombreYApellidos.Value
= Trim(CType(objclsDatos.Nombre.Value, String))
End If
4º AmbiguousMacthException was unhanled by user code
No se pudo
llevar a cabo la resolución de sobrecarga porque no se puede llamar a ningún
Public 'op_Implicit' sin una conversión de restricción:
'Public Shared Widening
Operator CType(x As System.Data.SqlTypes.SqlByte) As System.Data.SqlTypes.SqlInt16':
El parámetro 'x' correspondiente al
argumento se reduce de 'Integer' a 'SqlByte'.
'Public Shared Widening
Operator CType(x As Short) As System.Data.SqlTypes.SqlInt16':
El parámetro 'x' correspondiente al argumento
se reduce de 'Integer' a 'Short'.
Para evitar este tipo de errores es importante poner
option string a true al principio del
módulo para que los errores de compilación salten en modo de diseño y no en
ejecución.
Abajo lo que había, y después lo que resuelve el problema.
objValue = objValue.op_Implicit(objValueIfIsNull)
Se resuelve previniendo que objValueIfIsNull no
venga a nothing ni a cero.
If (objValueIfIsNull <> 0) Or
(objValueIfIsNull IsNot Nothing) Or (objValueIfIsNull
<> "") Then
objValue =
objValue.op_Implicit(objValueIfIsNull)
End If
5º Unable to cast COM object of type ‘’ to interface type ‘’.
This operation failed because the QueryInterface call on the COM component for
the interface with IID ‘’ failed due to the following error: No such interface
suporrted.
Se trata de un problema de permisos del IIS en vez de
Network service debe ir con Local System
No hay comentarios:
Publicar un comentario