Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Grupo de Teaming del ClubDelphi

 
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 19-01-2011
Avatar de erickahr
erickahr erickahr is offline
Miembro
 
Registrado: feb 2010
Posts: 94
Poder: 15
erickahr Va por buen camino
ISAPI con delphi

Estoy tratando de hacer un sitio con páginas dinamicas, de hecho he desarrollado un pequeño ejemplo y compilado la DLL, pero resulta que no me funciona, es decir que cuando invoco desde el navegador alguna accion de las que se encuentran en la DLL, me manda el error 404, que segun tengo entendido se debe a que no se encuentra la página; este 'sitio' lo tengo sobre Windows 2003 y estoy corriendo en este el IIS 6.0 el cual tiene permitido el ISAPI.
http://avt7ya.bay.livefilestore.com/...iis.png?psid=1

He puesto la pagina html con la que ingreso en el directorio 'c:\inetpub\wwwroot\', y la dll generada en delphi2010 en la carpeta 'Scripts'

Este es el codigo de la DLL(cabe mencionar que es el ejemplo de un tuto de RD identico, solo aguna variaciones)
Código:
unit WebMain;
interface
uses
  SysUtils, Classes, HTTPApp, DBWeb, DB, IBCustomDataSet, IBDatabase, HTTPProd;
type
  TWebModule1 = class(TWebModule)
    Base: TIBDatabase;
    TT: TIBTransaction;
    Detalle: TIBDataSet;
    Maestro: TIBDataSet;
    DataSetTableProducer1: TDataSetTableProducer;
    procedure WebModule1waGuardarenlibroAction(Sender: TObject;
      Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
    procedure DataSetTableProducer1FormatCell(Sender: TObject; CellRow,
      CellColumn: Integer; var BgColor: THTMLBgColor; var Align: THTMLAlign;
      var VAlign: THTMLVAlign; var CustomAttrs, CellData: string);
    procedure WebModule1waDetallemensajeAction(Sender: TObject;
      Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
  private
  public
  end;
var
  WebModule1: TWebModule1;
implementation
{$R *.dfm}
procedure TWebModule1.DataSetTableProducer1FormatCell(Sender: TObject; CellRow,
  CellColumn: Integer; var BgColor: THTMLBgColor; var Align: THTMLAlign;
  var VAlign: THTMLVAlign; var CustomAttrs, CellData: string);
begin
  if (CellColumn = 1) and (CellRow<>0) then
    CellData := '<A HREF="/scripts/WebServer.dll/detallemensaje?idmensaje=' +
  Maestro.FieldByName('idmensaje').AsString + '">' + CellData + '</A>';
end;
procedure TWebModule1.WebModule1waDetallemensajeAction(Sender: TObject;
  Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
var htmlResponse: string;
begin
  if Request.QueryFields.Values['idmensaje']<>'' then
    with Detalle do begin
      Close;
      Params.ByName('idmensaje').AsInteger :=
      StrToInt(Request.QueryFields.Values['idmensaje']);
      Open;
      htmlResponse := '<HTML><BODY><TABLE WIDTH="100%" BORDER="1">'#13;
      htmlResponse := htmlResponse + '<TR><TD COLSPAN="2" BGCOLOR="#CCCCCC"><CENTER><H2>Detalle del mensaje</H2></CENTER></TD></TR>'#13;
      htmlResponse := htmlResponse + '<TR><TD WIDTH="40%"><B>ID del mensaje:</B></TD><TD>' + FieldByName('idmensaje').AsString + '</TD></TR>'#13;
      htmlResponse := htmlResponse + '<TR><TD><B>Nombre:</B></TD><TD>' +
      FieldByName('nombre').AsString + '</TD></TR>'#13;
      htmlResponse := htmlResponse + '<TR><TD><B>Correo electr&oacute;nico:</B></TD><TD>' + FieldByName('email').AsString + '</TD></TR>'#13;
      htmlResponse := htmlResponse + '<TR><TD><B>Ciudad:</B></TD><TD>' +
      FieldByName('ciudad').AsString + '</TD></TR>'#13;
      htmlResponse := htmlResponse + '<TR><TD COLSPAN="2"><B>Mensaje:</B><BR>' +
      FieldByName('mensaje').AsString + '</TD></TR>'#13;
      htmlResponse := htmlResponse + '</TABLE></BODY></HTML>'#13;
      Close;
    end
  else htmlResponse := '<HTML><BODY><H2>Hubo un error en el id del mensaje.</H2></BODY></HTML>';
  Response.Content := htmlResponse;
end;
procedure TWebModule1.WebModule1waGuardarenlibroAction(Sender: TObject;
  Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
var
  msg: string;
begin
  try
    msg := '';
    with Maestro do begin
      Append;
      FieldByName('nombre').AsString := Request.ContentFields.Values['nombre'];
      FieldByName('email').AsString := Request.ContentFields.Values['email'];
      FieldByName('ciudad').AsString := Request.ContentFields.Values['ciudad'];
      FieldByName('mensaje').AsString := Request.ContentFields.Values['mensaje'];
      Post;
      TT.Commit;
      Maestro.Open;
    end;
    except
      on E:Exception do  begin
        TT.Rollback;
        msg := E.Message;
      end;
    end;
  if msg = '' then msg := 'Registro guardado correctamente.';
Response.Content := '<HTML><BODY><CENTER><H2>' + msg + '</H2><P><A HREF="/guardarenlibro.htm">Regresar</A></CENTER></BODY></HTML>';
end;
end.
y este el Codigo del formulario o pagina inicial en HTML

Código:
<html>
<head>
<title>Libro de visitas</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body bgcolor="#FFFFFF">
<table width="400" align="center" border="1">
<tr><td>
<h1>Libro de Visitas</h1>
<form method="post" action="/scripts/WebServer.dll/guardarenlibro" name="form1">
<p>Nombre:
<input type="text" name="nombre" size="40" maxlength="100">
</p>
<p>E-Mail:
<input type="text" name="email" size="40" maxlength="100">
</p>
<p>Ciudad:
<input type="text" name="ciudad" size="40" maxlength="40">
</p>
<p>Mensaje: <br>
<center><textarea name="mensaje" cols="40" rows="5"></textarea></center>
</p>
<p><center>
<input type="submit" name="Submit" value="Enviar">
<input type="reset" name="boton" value="Borrar campos">
<input type="button" value="Ver mensajes"
OnClick="top.location.href='/scripts/WebServer.dll/lista';">
</center></p>
</form>
</td></tr>
</table>
</body>
</html>

Dada la informacion (a ver si no se durmieron con mi explicacion), cuando le doy click en el boton 'Enviar' por ejemplo y me manda el codigo 404, ahora despues de tanta explicacion, mis dudas es: ¿debo hacer alguna configuracion especial en el IIS? o bien a ¿que se debe que no funcione?, ayuda porfavor!!!
__________________
Nadie puede separar su fe de sus actos, o sus creencias de sus afanes

Última edición por erickahr fecha: 19-01-2011 a las 18:25:07. Razón: El primer bloque es codigo delphi, pero como tiene tags HTML, se me hizo un desastre en la pregunta, asi que lo puse en CODE
Responder Con Cita
 



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
ShareMem es requerida en ISAPI ? rolandoj Internet 0 17-03-2008 21:09:30
Filtro Isapi con C# Melcv .NET 0 26-06-2006 11:57:28
ISAPI e Interbase!!! acertij022 Internet 2 02-07-2004 21:44:12
Apache e ISAPI de Delphi anitra_cattivo Internet 10 22-05-2004 18:21:07
Modo seguro en cgi o isapi ingacg Internet 0 25-10-2003 02:08:14


La franja horaria es GMT +2. Ahora son las 04:48:48.


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