asp-classic vbscript null nullreferenceexception nothing

asp classic - Error al buscar NULL en VBScript



asp-classic nullreferenceexception (3)

Tengo el siguiente VBScript en una página ASP clásica:

function getMagicLink(fromWhere, provider) dim url url = "magic.asp?fromwhere=" & fromWhere If Not provider is Nothing Then '' Error occurs here url = url & "&provider=" & provider End if getMagicLink = "<a target=''_blank'' href=''" & url & "''>" & number & "</a>" end function

Sigo recibiendo un mensaje de error "Objeto requerido" en la línea que dice " If Not provider Is Nothing Then .

O bien el valor es NULL, o no es NULL, entonces, ¿por qué recibo este error?

Editar: Cuando invoco el objeto, paso NULL o paso una cadena.


Desde su código, parece que el provider es una variante o alguna otra variable, y no un objeto.

Is Nothing es solo para objetos, pero luego dices que es un valor que debería ser NULL o NOT NULL, que sería manejado por IsNull .

Intenta usar:

If Not IsNull(provider) Then url = url & "&provider=" & provider End if

Alternativamente, si eso no funciona, intente:

If provider <> "" Then url = url & "&provider=" & provider End if


Veo mucha confusión en los comentarios. Null , IsNull() y vbNull se utilizan principalmente para el manejo de bases de datos y normalmente no se utilizan en VBScript. Si no se establece explícitamente en la documentación del objeto / datos llamante, no lo use.

Para probar si una variable no está inicializada, use IsEmpty() . Para probar si una variable no está inicializada o contiene "" , prueba en "" o Empty . Para probar si una variable es un objeto, use IsObject y para ver si este objeto no tiene una prueba de referencia en Is Nothing .

En su caso, primero quiere probar si la variable es un objeto, y luego ver si esa variable es Nothing , porque si no es un objeto, obtiene el error "Object Required" cuando prueba en Nothing .

fragmento para mezclar y combinar en tu código:

If IsObject(provider) Then If Not provider Is Nothing Then '' Code to handle a NOT empty object / valid reference Else '' Code to handle an empty object / null reference End If Else If IsEmpty(provider) Then '' Code to handle a not initialized variable or a variable explicitly set to empty ElseIf provider = "" Then '' Code to handle an empty variable (but initialized and set to "") Else '' Code to handle handle a filled variable End If End If


Añadiré un espacio en blanco ("") al final de la variable y haré la comparación. Algo como a continuación debería funcionar incluso cuando esa variable sea nula. También puede recortar la variable solo en caso de espacios.

If provider & "" <> "" Then url = url & "&provider=" & provider End if