unit WebModuleU; interface uses System.SysUtils, System.Classes, Web.HTTPApp, MVCFramework; type TMyWebModule = class(TWebModule) procedure WebModuleCreate(Sender: TObject); procedure WebModuleDestroy(Sender: TObject); private FMVC: TMVCEngine; public { Public declarations } end; var WebModuleClass: TComponentClass = TMyWebModule; implementation {$R *.dfm} uses MVCFramework.Commons, MyControllerU, LoggerPro, // loggerpro core LoggerPro.FileAppender, // loggerpro file appender (logs to file) LoggerPro.ConsoleAppender, // loggerpro console appender (logs to the console) LoggerPro.OutputdebugStringAppender // loggerpro outputdbugstring appender (logs to the debugger) ; procedure TMyWebModule.WebModuleCreate(Sender: TObject); var lMyLogger: ILogWriter; begin lMyLogger := BuildLogWriter([ TLoggerProFileAppender.Create(10, 1000, 'MyFolder\MyLogs'), TLoggerProOutputDebugStringAppender.Create ], nil, TLogType.Debug); FMVC := TMVCEngine.Create(Self, procedure(Config: TMVCConfig) begin // enable static files Config[TMVCConfigKey.DocumentRoot] := ExtractFilePath(GetModuleName(HInstance)) + '\www'; // session timeout (0 means session cookie) Config[TMVCConfigKey.SessionTimeout] := '0'; // default content-type Config[TMVCConfigKey.DefaultContentType] := TMVCConstants.DEFAULT_CONTENT_TYPE; // default content charset Config[TMVCConfigKey.DefaultContentCharset] := TMVCConstants.DEFAULT_CONTENT_CHARSET; // unhandled actions are permitted? Config[TMVCConfigKey.AllowUnhandledAction] := 'false'; // default view file extension Config[TMVCConfigKey.DefaultViewFileExtension] := 'html'; // view path Config[TMVCConfigKey.ViewPath] := 'templates'; // Enable STOMP messaging controller Config[TMVCConfigKey.Messaging] := 'false'; // Enable Server Signature in response Config[TMVCConfigKey.ExposeServerSignature] := 'true'; end, lMyLogger); FMVC.AddController(TMyController); end; procedure TMyWebModule.WebModuleDestroy(Sender: TObject); begin FMVC.Free; end; end.