Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Delphi para la web
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Colaboración Paypal con ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 25-06-2024
Avatar de TrUnkS
TrUnkS TrUnkS is offline
Miembro
 
Registrado: dic 2005
Posts: 96
Poder: 19
TrUnkS Va por buen camino
Question No puedo cargar una dll ISAPI de WebBroker cuando le agrego un DataModule

Buenas..., uso Delphi 12.1.1. He creado un proyecto nuevo de WebBroker como dll ISAPI y sin meterle mano guardo el proyecto tal cual como lo crea el asistente sin hacer nada mas. Compilo la dll y y la llevo al servidor a la carpeta del sitio (parando el servidor primero y refrescando el pool). Para saber si la dll esta cargada correctamente voy al navegador y la llamo (localhost/Project1.dll) y efectivamente me muestra el mensaje "Web Server Application". Creo un nuevo proyecto haciendo lo mismo pero le cambio el texto al mensaje "Web Server Aplication PRUEBA 2", bajo el servidor y cargo la nueva dll y efectivamente me muestra "Web Server Application PRUEBA 2". Creo un nuevo proyecto y haciendo lo mismo le agrego un modulo de datos (DataModule), compilo y llevo la dll a la carpeta del sitio, ya esta vez no hace nada, se queda pensando. Vuelvo a cargar las anteriores dll y no hay problema, todas funcionan bien, pero le meto un modulo de datos y ya se cuelga. ¿ A Alguien le ha pasado lo mismo ?. Gracias
Responder Con Cita
  #2  
Antiguo 25-06-2024
Avatar de TrUnkS
TrUnkS TrUnkS is offline
Miembro
 
Registrado: dic 2005
Posts: 96
Poder: 19
TrUnkS Va por buen camino
Smile

Estimados, Quizás le pueda servir a alguien. Lo pude solucionar considerando que Delphi crea instancias de los módulos de datos en tiempo de diseño en el archivo del proyecto(dpr):

Código Delphi [-]
library Project1;

uses
  Winapi.ActiveX,
  System.Win.ComObj,
  Web.WebBroker,
  Web.Win.ISAPIApp,
  Web.Win.ISAPIThreadPool,
  WebModuleUnit1 in 'WebModuleUnit1.pas' {WebModule1: TWebModule},
  DataModule1Unit1 in 'DataModule1Unit1.pas' {DataModule1: TDataModule};

{$R *.res}

exports
  GetExtensionVersion,
  HttpExtensionProc,
  TerminateExtension;

begin
  CoInitFlags := COINIT_MULTITHREADED;
  Application.Initialize;
  Application.WebModuleClass := WebModuleClass;
  Application.CreateForm(TDataModule1, DataModule1); // <--- instancia del módulo de datos
  Application.Run;
end.

Como había creado y liberado los módulos de datos dentro de las Actions del WebModule no supuse que habría problema por ese motivo, pero no consideré eliminar las instancias creadas por Delphi en el archivo de proyecto.

Código Delphi [-]
library Project1;

uses
  Winapi.ActiveX,
  System.Win.ComObj,
  Web.WebBroker,
  Web.Win.ISAPIApp,
  Web.Win.ISAPIThreadPool,
  WebModuleUnit1 in 'WebModuleUnit1.pas' {WebModule1: TWebModule},
  DataModule1Unit1 in 'DataModule1Unit1.pas' {DataModule1: TDataModule};

{$R *.res}

exports
  GetExtensionVersion,
  HttpExtensionProc,
  TerminateExtension;

begin
  CoInitFlags := COINIT_MULTITHREADED;
  Application.Initialize;
  Application.WebModuleClass := WebModuleClass;
  //Application.CreateForm(TDataModule1, DataModule1); 
  Application.Run;
end.
Código Delphi [-]
procedure TWebModule1.WebModule1DefaultHandlerAction(Sender: TObject;
  Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
begin
 DataModule1 := TDataModule1.Create(nil);
 try
  DataModule1.FDConnection1.Connected := True;
  Response.Content :=
    '' +
    'Web Server Application (datamodule in runtime)' +
    'Web Server Application (datamodule in runtime)' +
    '';
 finally
  DataModule1.Free;
 end;
end;

Última edición por TrUnkS fecha: 25-06-2024 a las 01:34:44.
Responder Con Cita
  #3  
Antiguo 25-06-2024
WHILENOTEOF WHILENOTEOF is offline
Miembro
 
Registrado: mar 2008
Posts: 232
Poder: 17
WHILENOTEOF Va camino a la fama
Imagino que el datamodule tendrá algo, asegúrate que funciona (coonexiones, que no estén abiertas antes de establecer parámetros de conexión, cosas de ese tipo). Si tienes clientdatasets mira que tengas puesta midas.dll en el directorio o pon la unit Midaslib. Aunque se puede depurar la dll isapi, yo prefiero crearme un proyecto de escritorio que utilice todo el resto de la isapi y así puedo depurar mejor para identificar problemas. Suele ser un tema que da bastante guerra por pequeñas chorradas, pero al final (como todo) va.

P.D. , ya veo que lo has solucionado, esas son las "pequeñas chorradas" de las que hablaba.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
cargar valor en texto edit cuando se inicie el formulario raulmm26 Varios 2 01-07-2008 09:20:39
Error añ cargar un Datamodule con ADO poliburro Conexión con bases de datos 0 02-03-2005 23:55:36
Cargar DataModule en tiempo de ejecucion luigidean Varios 3 08-10-2004 01:30:34
Como cargar los forms solo cuando los necesite? TURING Varios 2 21-08-2004 20:39:43
Error a cargar DLL ISAPI anitra_cattivo Internet 1 02-10-2003 22:16:18


La franja horaria es GMT +2. Ahora son las 01:01:50.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi