14.2.0

New

  • New Debug visualizers for THttpRequest and other IntraWeb internal classes (Delphi 2010 and up)
  • New 404 error page. It has the same layout of other IntraWeb standard error pages and can be customized (or replaced) the same way.
  • New event IWForm.OnAsyncResize. Allows resize notification just like standard OnResize, however it also allows users to respond to the browser resize through Ajax, like any other async request.
  • New security features:
    • ServerController.SecurityOptions.PreventDoubleSubmission which prevents a double post, i.e. POST request caused by browser refresh after a previous post request. IntraWeb will identify a browser refresh after a POST and disables the double submission (Cookies are required).
    • Method interchange prevention, prevents that parameters sent through URI query string are processed as a POST request.
  • New ServerController.OnBeforeNewSession event. This event is triggered just before creating a new session. Users can abort the session creation using it. A standard 404 page will be returned when session creation is aborted.
  • New property ServerController.HTMLLanguage. New property TIWApplication.Language (default = ServerController.HTMLLanguage). Different sessions can get diferent Language values. If not specified, English (“en”) is used
  • New unit IWClassesFix.pas changes the way Delphi’s fixup resolution works. New IntraWeb fixup resolution is done on a per-thread basis. The new fixup resolution (enabled by default) can be disabled using a new class property DisableFixupPatch in TIWServerController (public, not published thus not visible in Object Inspector). We strongly recommend that this should be enabled in every IntraWeb application.

Bug Fixes

  • Cookies expires field could be wrongly set when using ASPX modules (update ASPX binaries only)
  • IWDBGrid.RollOver doesn’t work as expected
  • TIWButton would not render correct height on MacOS/Safari
  • IntraWeb Stand Alone server could fail to detect Firefox
  • Async key press event would fail to report some special keys like ESCAPE

Modified

  • TIWApplication.Terminate(const aMsg: string) can receive a complete HTML text as parameter.
  • Templates allow usage of wildcards (* and ?) in component names. Example: {%IWCheckBox*%} will insert all controls which name start with “IWCheckBox“, found when the template is processed. This includes “IWCheckBox1“, “IWCheckBox2“, “IWCheckBoxABCD“. This makes easy for users to include components created at runtime.
  • Classes.GlobalNameSpace lock used in RTL (based on slow and possibly buggy TMultiReadExclusiveWriteSynchronizer) was replaced by a faster and more reliable lock based on TCriticalSection.
  • All locks based on TMultiReadExclusiveWriteSynchronizer or TMonitor were replaced by more reliable versions based on TCriticalSection.
  • Custom IW data containers replace TList, TObjectList and TStringList in several places within IntraWeb code. TList is deprecated in Delphi 10.2. The generic version TList<T> is slow and consumes lots of memory. The new custom classes use less memory and are much faster.
  • New version of ASPX binaries. If you are using ASPX deployment, replace the old binaries.
  • IntraWeb Setup allows user to run IW Bundled Removal tool when setup is complete.
  • Dozens of other small fixes and improvements.

This version is not binary compatible with previous version. Third party dependent libraries (e.g. TMS, CG Tools, IWBootstrap), need to be recompiled from sources.