Página 1 de 1

PerlScript Error error '80004005'

NotaPublicado: 2014-10-30 01:50 @118
por Naika
Hola.

Estoy empezando a utilizar Perl, PerlScript, comenzando con una migración de versiones de Perl de 5.005 a 5.16.3.

Tengo problemillas con el entorno de desarrollo al lanzar un simple asp.

La primera carga de la página la realiza correctamente, pero la segunda vez que recargo el mismo asp, peta con un mensaje tal que así:

PerlScript Error error '80004005'

Can't call method "ServerVariables" on an undefined value


SO Windows Server 2012 R2, IIS 8.5 y he instalado Perl 5.16 (32 bits).

Estoy perdida, no encuentro información y la que encuentro no sé interpretar correctamente.

¿A alguien le ha ocurrido algo parecido? ¿Podéis orientarme por dónde buscar?

El código es el siguiente:

Sintáxis: [ Descargar ] [ Ocultar ]
Using asp Syntax Highlighting
  1. <%@LANGUAGE=PerlScript%>
  2. <%
  3. BEGIN { #adcsvn
  4.                 my $sServerName = $::Request->ServerVariables('SERVER_NAME')->Item;    
  5. }
  6.  
  7.  use DBI;
  8.  use LWP::Simple;
  9.  use File::Slurp;
  10.  
  11.  print  "SSSSSSS-3"."\n";
  12.  
  13. %>
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4


Muchas gracias

Re: PerlScript Error error '80004005'

NotaPublicado: 2014-10-30 05:12 @258
por explorer
El error indica que el objeto $Request no ha sido inicializado.

Es posible que sea debido a que la sentencia está dentro de una cláusula BEGIN.

Te recomiendo que la saques de ahí, y la cambies por

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. my $sServerName = $Request->ServerVariables('SERVER_NAME')->{Item};
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4


La notación la he sacado de esta introducción a PerlScript.

En esta página se comenta que la primera vez que se solicita la página, falla, pero no en las siguientes.

Re: PerlScript Error error '80004005'

NotaPublicado: 2014-10-30 05:46 @282
por Naika
Hola.

Muchas gracias por responder.

Lo he probado y sale pantalla en blanco.

He revisado el log del servidor y da un 200 OK.

En ocasiones también falla el Objeto $Response, se cae el entorno y lo tengo que reiniciar.

¿Puede ser algo de la configuración de Perl con ASP? ¿Dónde puedo revisar esto?

También estoy algo perdida en las variables del servidor. ¿En qué biblioteca puedo validar la propiedades o métodos del objeto $Request o $Response? ¿Necesitaría realizar un new o algo parecido para inicializarlas? ¿Y sin son a nivel del servidor, dónde puedo comprobar estas variables en el IIS?

He lanzado esto:

foreach my $item (Win32::OLE::in $Request->ServerVariables) {
$Response->Write($Request->ServerVariables($item)->Item);
}

para obtener el listado de las variables del servidor, y cuando funciona existe.

También he probado a inicializar los objetos de la forma

our ($Response,$Resquest);

pero no funciona.

¿Alguna otra idea?

¡¡Muchas preguntas!! :shock:

Gracias de nuevo :)


<%@LANGUAGE=PerlScript%>
<%

use strict;
use Win32::ASP qw(:strict);


my $sServerName = $Request->ServerVariables('SERVER_NAME')->{Item};


use DBI;
use LWP::Simple;
use File::Slurp;

Print $sServerName;

print "SSSSSSS-3"."\n";

%>

Re: PerlScript Error error '80004005'

NotaPublicado: 2014-10-30 20:20 @889
por explorer
El manual de introducción a PerlScript (que te he enlazado en el mensaje anterior) dice que esas dos variables son creadas de forma automática en el momento de arrancar el código. En el punto 4.4 comenta que se puede usar 'use vars' para declararlas.

A lo mejor en el foro de ActiveState / ActivePerl tienes más pistas. Yo en Google no he encontrado apenas nada, salvo el posible bug enlazado antes.

Re: PerlScript Error error '80004005'

NotaPublicado: 2014-10-31 01:41 @112
por Naika
Seguiré buscando :wink:

Muchas gracias por tu tiempo y la información.

Un saludo

Re: PerlScript Error error '80004005'

NotaPublicado: 2014-11-03 07:05 @337
por Naika
Hola.

He llegado al origen del problema se trata de la libreria PerlSE.dll.

De vez en cuando obtengo este error:

'IActiveScript::SetScriptState()' from 'CActiveScriptEngine::ReuseEngine()'..

¿Alguna idea de qué puede ser?

Muchas gracias.

Un saludo.