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ó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!!!
