Recomendado: Colección útil de funciones en el desarrollo de ASP (1) ¡Una colección de funciones útiles en el desarrollo de ASP es bastante útil! ¡Espero que todos lo mantengan! % '****************************************************** 'Prevent external submission'*************************************** function ChkPost() dim server_v1,server_v2 chkpost=false server_v1=Cstr(Request.ServerVari
En VBScript, hay una declaración de reanudación de error ON que hace que el intérprete de script ignore los errores de tiempo de ejecución y continúe la ejecución del código de script. Luego, el script puede verificar el valor de la propiedad Err.Number para determinar si ocurrió un error. Si se produce un error, se devuelve un valor distinto de cero. En ASP 3.0, también puede usar el error GOTO 0 para volver al manejo de errores predeterminado. Este tipo de procesamiento en realidad se realiza en ASP 2.0, pero no hay una descripción del documento correspondiente, que es común en muchos archivos de procesamiento relacionados con los datos de ASP. Agregue el currículum de error A continuación para desactivar el procesamiento de error predeterminado y luego use ERR para atraparlo.Si err entonces
Err.Clear
Se produjo un error en Respuesta. ¡Escribe!
Respuesta.
Final si
Para obtener una descripción de error más detallada, intentemos el objeto Asperror. Es un nuevo objeto de ASP3.0. Se puede obtener a través del método GetLasterRor del objeto del servidor . Asperror proporciona información detallada sobre el último error en ASP. A diferencia del objeto ERR en VBScript, no se puede llamar a este método en ningún momento para ver si ocurre un error. Solo se puede usar en una página web de error personalizada ASP. Si lo usa desactivando el manejo de error predeterminado (usando la instrucción ON ERROR ERRUME SIGUIENTE) Como usar el objeto ERR, el método GetLasterRor no puede acceder a los datos detallados del error.
Propiedades del objeto Asperror:
El objeto Asperror proporciona nueve atributos para indicar la naturaleza y la fuente del error que ocurrió, y devuelve el código real que causó el error. Las propiedades y descripciones son las siguientes:
ASPCODE: Integer. Número de error generado por ASP/IIS, como 0x800a009
AspDescription: Tipo de cadena. Si este error es un error relacionado con ASP, esta propiedad es una descripción detallada del error. Por ejemplo: todos http: http_accept:*/* http_accept_language: zh-cn http_connection: keep-alive http_host: s http_user_agent: mozilla/4.0 (compatible; msie 6.0; Windows nt 5.0; (R1 1.5)) ... e informes como las cookies.
Categoría: Tipo de cadena. La fuente del error es la del lenguaje de secuencias de comandos interno ASP, o un objeto.
Columna: entero. Ubicación del personaje en el archivo que generó el error
Descripción: Tipo de cadena. Una breve descripción del error
Archivo: Tipo de cadena. El nombre del archivo que se procesa cuando ocurrió el error
Línea: entero. Número de línea en el archivo que generó el error
Número: entero. Un código de error COM estándar
Fuente: Tipo de cadena. El código real de la línea que planteó el error
Ok, estas son 9 propiedades. La sintaxis de usar el objeto Asperror es:
asperror.property
Eso es todo: asperror.aspcode ()
Asperror.aspdescription ()
Asperror.category ()
Asperror.column ()
Asperror.description ()
Asperror.file ()
Asperror.line ()
Asperror.number ()
Asperror.source ()
Cuando se produce un error relacionado con ASP en cualquier página en todos los directorios compatibles con IIS (o en el directorio donde se editan las propiedades de mapeo de errores), se cargará la página de error personalizada. De hecho, se ha establecido una trampa de error de script normal ahora, porque el error de tiempo de ejecución de ASP en cualquier página web en este directorio activará una página de error personalizado. La página web de error es la parte de instalación predeterminada de IIS y se puede personalizar de acuerdo con situaciones personales. Por ejemplo, cuando ingresamos una página web inexistente en un directorio, se produce un error 404. Cuando se produce un error 404, la página utilizada es 404b.htm. Este archivo contiene una parte del código de script del cliente, que obtiene la URL del documento actual (recupere del atributo de URL del objeto de documento) y la muestra en la página: [html] <! Doctype html public -// w3c // dtd html 3.2 final // en>
<html dir = ltr>
<Evista>
<Syle> A: Link {Font: 9pt/11pt 环; Color: FF0000} A: Visited {Font: 9pt/11pt 环; Color:#4e4e4e}
</style>
<Meta name = robots content = noindex>
<title> No se puede encontrar la página web </title>
<Meta http-oquiv = content-type content = text-html; Charset = GB2312>
<Meta name = ms.locale content = zh-cn>
</ablo>
<script>
Function HomePage () {
<!-
// En bits reales, las URL son devueltas a nuestro guión de esta manera:
// res: //shdocvw.dll/http_404.htm#http: //www.docurl.com/bar.htm
// para probar use docurl = res: //shdocvw.dll/http_404.htm#https: //www.microsoft.com/bar.htm
Docurl = document.url;
// Aquí es donde estarán el HTTP o HTTPS, como se encuentra buscando: // pero omitiendo el res: //
protocolindex = docurl.indexof (: //, 4);
// Esto encuentra el corte final para el servidor de dominio
serverIndex = docurl.Indexof (/, ProtocolIndex + 3);
// Para el HREF, necesitamos una URL válida para el dominio. Buscamos el símbolo # para encontrar el comienzo
// de la URL verdadera y agregue 1 para omitirla: este es el valor de comienzo. Usamos ServerIndex como marcador final.
//urlResult=docurl.substring(protocolindex - 4, serverIndex);
BeginUrl = docurl.indexof (#, 1) + 1;
urlResult = docurl.substring (beginUrl, serverIndex);
// Para la pantalla, necesitamos omitir después de http: //, y ir al siguiente corte
displayResult = docurl.substring (Protocolindex + 3, serverIndex);
InsertElementArchor (urlResult, displayResult);
}
función htmlencode (texto)
{
return text.replace (/&/g, '& amp'). reemplazar (/'/g,' & quot; '). reemplazar (/</g,' & lt; '). reemplazar (// g,' & gt; ');
}
función tagattrib (nombre, valor)
{
return ''+name+'='+htmlencode (valor)+'';
}
function printTag (tagName, NeedCloSetag, Attrib, Inner) {
document.write ('<' + tagname + attrib + '>' + htmlencode (inner));
if (NeedCloSetag) document.write ('</' + tagName + '>');
}
función uri (href)
{
Iever = window.navigator.appversion;
Iever = Iever.substr (iever.indexof ('msie') + 5, 3);
return (iever.charat (1) == '.' && iever> = '5.5')?
encodeuri (href):
Escape (href) .Replace (/%3a/g, ':'). Reemplazar (/%3b/g, ';');
}
función InsertElementArchor (href, texto)
{
Printtag ('a', true, tagattrib ('href', uri (href)), texto);
}
//->
</script>
<Body bgcolor = ffffff>
<ancho de tabla = 410 CellPadding = 3 CellPacing = 5>
<tr>
<td align = izquierda valign = ancho medio = 360>
<h1 style = color: 000000; Font: 12pt/15pt Songti> <!-Problema-> La página web no se puede encontrar </h1>
</td>
</tr>
<tr>
<td width = 400 colspan = 2> <font style = color: 000000; FUENT: 9PT/11PT> La página web que está buscando puede haber sido eliminada, renombrada o no está disponible temporalmente. </font> </td>
</tr>
<tr>
<td width = 400 colspan = 2> <font style = color: 000000; FUENT: FUNTA DE CANCIÓN 9PT/11PT>
<hr color =#c0c0c0 noshade>
<p> Por favor, intente lo siguiente: </p>
<ul>
<li> Si escribió una dirección web en la barra de direcciones, verifique que se escriba correctamente. <br>
</li>
<li> Open <script>
<!-
if (! ((Window.navigator.useragent.indexof (msie)> 0) && (window.navigator.appversion.charat (0) == 2))))
{
Página principal();
}
//->
</script> página de inicio, busque enlaces a la información requerida. </li>
<li> Haga clic en el botón <a href = javaScript: History.back (1)> Back </a> para probar otros enlaces. </li>
</ul>
<h2 style = font: 9pt/11pt Songti; Color: 000000> HTTP 404 - El archivo no se puede encontrar <br> Servicio de información de Internet <br> </h2>
<hr color =#c0c0c0 noshade>
<p> Información técnica (que apoya individuos) </p>
<ul>
<li> Detalles: <br> <a href = http: //www.microsoft.com/contentredirect.asp? prd = iis & sbp = & pver = 5.0 & pid = & id = 404 & cat = web & os = & over = & hrd = & opt1 = & opt2 = & opt3 = target = _blank> microsoft </aa
</li>
</ul>
</font> </td>
</tr>
</table>
</body>
</html>
[/html]
Cuando se produce un error, la relación de asignación entre el error y el archivo de la página web de error se determina en la pestaña Errores personalizados del cuadro de diálogo Propiedades de cada directorio. Esto se encuentra en la configuración de la propiedad en el Gerente de Servicios de Internet. Si está interesado, vaya y eche un vistazo.
Error personalizado La página web muestra todos los valores del atributo del objeto Asperror y devuelve un mensaje de estado del encabezado HTTP al cliente utilizando el método Response.status, lo que indica que ha ocurrido un error. Luego use el método getLasterRor para obtener una referencia al objeto Asperror, para que pueda acceder a los datos detallados del error:
…
<%
Respuesta.status = 500 Error del servidor interno
Establecer objaspeError = server.getLasterRor ()
%>
Actualmente ejecutando la página: <b> show_error.asp </b> <p>
<b> Detalles del error: </b> <br>
Asperror.aspcode = < % = objaspeerror.aspcode %> <br>
Asperror.number = < % = objaspeError.number %> (0x < % = hex (objaspeError.number) %>) <br>
Asperror.source = < % = server.htmlencode (objasperror.source) %> <br>
Asperror.category = < % = objaspeError.Category %> <br>
Asperror.file = < % = objaspeError.file %> <br>
Asperror.line = < % = objaspeerror.line %> <br>
Asperror.column = < % = objaspeerror.column %> <br>
Asperror.description = < % = objaspeerror.description %> <br>
Asperror.aspds = < % = objaspeError.aspds %>
<Form de acción = < % = request.ServerVariAbles (http_referer) %> método = post>
<Input type = enviar name = cmdok value = return a la página anterior>
<p>
</form> Si se produce un error de script o ASP en una página de error personalizado, IIS solo devolverá un mensaje general correspondiente al código de error 500: 100. Este podría ser un mensaje de error del motor de script, o simplemente un mensaje bastante simple: error interno del servidor. La página de error personalizada no volverá a recargar.
Todos los entornos que contienen la página web incorrecta se entregarán a la página web incorrecta personalizada. Es decir, se pueden usar valores almacenados en cualquier colección o atributo de objetos internos ASP. Por ejemplo, si recupera el valor http_referer de la colección de solicitud.ServerVariables, reflejará la URL de la página que llamó la página original (es decir, la página que estaba antes de que ocurriera el error). Este valor no cambia cuando el servidor transfiere la ejecución a la página web incorrecta, y no contendrá la URL de la página web que se estaba ejecutando cuando ocurrió el error.
Del mismo modo, el valor script_name será el nombre de la página que contiene el error, no la URL de la página. Cuando se ha cargado una página de error, puede confirmar esto verificando la URL en la barra de direcciones del navegador. Sin embargo, los valores almacenados en las variables de script de la página web original no están disponibles en la página web incorrecta personalizada.
Si la página web ASP original se está ejecutando dentro de una transacción, es decir, hay una directiva < % @transacción = ... %> en el frente de la página web, también debe determinar si se deben tomar algunos métodos en la página web para salir de la transacción. Por ejemplo, puede llamar al método Setabort con el objeto ObjectContext incorporado:
ObjectContext.setabort
Bueno, la hora del front-end ha enviado miles de correos electrónicos de correo no deseado, todos los cuales están manejados por error
Opción explícita
Respuesta. Código de estado de AddHheader, 200
Respuesta.
En el currículum de error siguiente
Respuesta.
Dim objerror
Establecer objerror = server.getLasterRor ()
Dim OBJERR, OBJMAIL, HTML
establecer objerr = server.getLasterRor ()
Establecer objmail = createObject (cdonts.newmail)
objmail.from = [email protected]
objmail.to = [email protected]
objmail.bodyformat = 0
objmail.mailFormat = 0
objmail.subject = Error de QOP 500
html = <font face = 'Verdana, Arial, Helvetica, Sans-Serif'> <br>
html = html & <p> El error ocurrió en: y ahora
html = html & <p> referido desde: & request.servervariables (http_referer)
html = html & <p> url: & request.servervariables (URL)
html = html & <p> <b> Categoría: </b> </p> & objerr.category
html = html & <p> <b> nombre de archivo: </b> </p> & objerr.file
html = html & <p> <b> Código ASP: </b> </p> y objerr.aspcode
html = html & <p> <b> número: </b> </p> & objerr.number
html = html & <p> <b> Fuente: </b> </p> & objerr.surce
html = html & <p> <b> Linenenumber: </b> </p> & objerr.line
html = html & <p> <b> columna: </b> </p> & objerr.column
html = html & <p> <b> Descripción: </b> </p> & objerr.description
html = html & <p> <b> Descripción de ASP: </b> </p> & objerr.aspdescription
html = html & <lockQuote>
html = html y todos http: & request.servervariables (all_http)
html = html & </blockquote> </font>
objmail.body = html
objmail.send
objerr.
Establecer objmail = nada
Establecer objerr = nada
Response.Write (HTML)
Esto es realmente molesto de operar. Mira lo que el Sr. Lao Gai escribió en 500-100.asp:
<%
Response.WRITE OBJASPERROR.
Si objaspeerror.aspcode> entonces respuesta.write, y objaspeerror.aspcode
Response.write (0x & hex (objasperror.number) &) & <br>
Response.write <b> & objasperror.description & </b> <br>
Si objaspeerror.aspds> entonces respuesta.write objaspeerror.aspds & <br>
blergerrritten = falso
'Solo muestre la fuente si está disponible y la solicitud es de la misma máquina que IIS
Si objaspeerror.orce> entonces
strserverName = lcase (request.serverVariAbles (server_name))
strserverip = request.ServerVariAbles (local_addr)
strremoteip = request.ServerVariables (remota_addr)
If (strserverName = localhost o strserverip = strrremoteip) y objasperror.file <>? Entonces
Response.WRITE OBJASPERROR.FILE
Si objasperror.line> 0 luego respuesta.write, line & objasperror.line
If objaspeerror.column> 0 luego respuesta.write, column & objaspeerror.column
Response.Write <br>
Response.write <font style = color: 000000; FUENT: 8pt/11pt Courier New> <b>
Response.write Server.htmlencode (objasperror.source) y <br>
Si objaspeerror.column> 0 luego respuesta.write string ((objaspeError.Column - 1), -) & ^<br>
Response.Write </b> </font>
blnergrorWritten = verdadero
Final si
Final si
Si no es blergrorwritten y objasperror.file <>? Entonces
Response.Write <b> y Objasperror.file
Si objasperror.line> 0 luego respuesta.write, line & objasperror.line
If objaspeerror.column> 0 luego respuesta.write, column & objaspeerror.column
Response.Write </b> <br>
Final si
%>
Aquí hay una referencia: Programación avanzada ASP 3.0 con respecto a las propiedades del uso de objetos Asperror, hay los siguientes puntos que vale la pena señalar:
· Incluso si no se produce ningún error, la propiedad número siempre debe tener un valor. Si no se produce ningún error cuando la página web ASP llama al método GetLasterRor, el valor de esta propiedad es 0. Normalmente, para el error de tiempo de ejecución de los scripts ASP, la propiedad número devuelve el valor hexadecimal 0x800a0000, más el código de error de motor de script estándar. Por ejemplo, el ejemplo anterior devuelve un valor de 0x800a0009 para el error de subíndice fuera de rango, porque el código de error para VBScript para este tipo de error es 9.
· Cuando ha pasado un error, los atributos de categoría y descripción siempre tendrán un valor.
· El valor de la propiedad APSCode es generado por IIS y estará vacío para la mayoría de los errores de script. En más casos, hay valores correspondientes cuando se usa un error de componente externo.
El valor de la propiedad ASPDescription es generado por el preprocesador ASP, no por el motor de script actualmente en uso, y estará vacío para la mayoría de los errores de script. Más a menudo, existe un valor correspondiente para errores, como llamar a un método no válido en un objeto ASP incorporado.
· El archivo, la fuente, la línea y las propiedades de la columna solo se pueden establecer cuando ocurre un error y si el error detalló los datos disponibles. Para un error de tiempo de ejecución, las propiedades de archivo y línea suelen ser válidas, pero la propiedad de la columna a menudo devuelve -1. La propiedad de origen se devuelve cuando el error es un error de sintaxis que evita que la página sea procesada por ASP. En general, en estos casos, las propiedades de línea y columna son válidas. Si escribe el valor de la propiedad de origen en la página, es aconsejable pasar el valor a HTMLENCODE Primero, en caso de que contenga caracteres HTML ilegales. El método HTMLEncode se discutirá en detalle más adelante en este capítulo.
Objeto err
Consejos: Esta es la segunda vez que escribo esto, y. El enfoque original estaba en la introducción del objeto Asperror. Ahora presentaré el objeto err. Este es un objeto muy simple y fácil de operar. Vamos., En la página ASP.
Al usar un objeto ERR, no necesita crear una instancia, lo que significa que puede usarlo casualmente cuando desea usarlo. Al igual que la sesión, no necesita crear una instancia como cuando se usa un objeto ADODB. Set Conn = Server.CreateObject (ADODB.Connection) se usa para crear una instancia. Devuelve un código de error, pero err! = Err.Number se puede borrar con el método BLOAR para facilitar el siguiente uso. Su método principal es un método de descripción, que devuelve una breve descripción de error. Aquí hay un ejemplo muy clásico:
< %@ Idioma = vBscript %>
<%Respuesta.Buffer = True
En el currículum de error siguiente
%>
<%
S = SA
Response.write (int (s))
Si err.number <> 0 entonces
Respuesta.
Se produjo un error en Respuesta. Write:%>
<html>
<Evista>
<title> </title>
</ablo>
<Body>
Número de error: < %= err.number %> <br/>
Mensaje de error: < %= err.description %> <br/>
Archivo de error: < %= Err.Source %> <br/>
Línea de error: < %= err.line %> <br/>
< %= Err %>
</body>
</Html>
<%Final si%>
Ejecutarlo y ver, err.line está vacía, ¿por qué? Debido a que el método de línea escrito en la VB de ASP no es compatible, esta es una propiedad residual en el apoyo de VB.JScript, y debe estudiar para atrapar.
Vale la pena señalar que cuando se usa el objeto ERR, se debe agregar un currículum de error a continuación, y se lanza la excepción que ha pasado el objeto Asperror.
Al vincular una base de datos, puede usar el objeto de error: Contar Propiedad: Se usa para contar el número de colecciones de errores, Método del elemento: Se usa para especificar un error específico, la sintaxis es error. Item (número), donde el número es un número. Dado que el elemento es el método predeterminado, el método de escritura de error (número) es equivalente al anterior. A continuación se muestra un programa. Utilizado para enumerar objetos de error:
<%
En el currículum de error siguiente
Establecer conn = server.createObject (ADODB.Connection)
Dim I, Your_Databasepath: Your_Databasepath = No.mdb
Connstr = Provider = Microsoft.Jet.OLEDB.4.0; Data Source = & Server.Mappath (Your_DatabasePath) &
Conn.open Connstr
Si conn.errors.count <> 0 entonces
Response.Write no pudo vincular la base de datos <hr/>
para i = 0 a Conn.errors.Count-1
Response.Write Conn.errors.Item (i) y <hr>
Response.Write Err.Description
próximo
demás
Respuesta. Escribe la base de datos de enlaces con éxito
final si
Conn.clar
%>
No hay diferencia entre el objeto ERR, ¿ha visto el resultado de comparación? Hace tanto frío que es fácil usar el objeto ERR directamente.
Generalmente se recomienda usar el objeto Asperror durante la depuración, lo que significa que si el currículum de error ON es REM, se lanzará de forma predeterminada con Asperror. Durante la operación oficial, puede usar el objeto ERR para hacer algo a menos que tenga requisitos especiales.
Acción: Colección útil de funciones en el desarrollo de ASP (2) Una colección de funciones útiles en el desarrollo de ASP es bastante útil, ¡por favor guárdela! '***************************************' Filtrado Hyperlink '*****************************************