UltiDev Cassini Web Server Release Notes

UltiDev Cassini is being retired and replaced by UltiDev Web Server Pro (UWS).
UltiDev Cassini for ASP.NET 4.0 will not be released. Please use UWS instead.

Release Log

July 12, 2008. Added Visual Studio 2008 Support. Runtime tested with ASP.NET 3.x.

   Summary of New Features

   New Features Details

  • Visual Studio 2008 Support

    Visual Studio 2008 support adds UltiDev Cassini Web Server 2.0 to the list of Setup project prerequisites in VS 2008. Unlike Visual Studio 2005, VS 2008 does not have to be installed in its default location for the installed to find it.

    Visual Studio 2008 developers can target 3.5, 3.0 and 2.0 versions .NET Framework, except WCF services (ASMX still works).

  • Cassini 2.0 compatibility with ASP.NET 3.x verified

    UltiDev Cassini Web Server 2.0 itself has not been changed or updated in this release. We just tested existing engine with ASP.NET 3.5 applications and web WCF services. We established that current web server works with ASP.NET 3.5 and 3.0 very well, including supporting new language features, like Lambda expressions, and new ASP.NET features, like built-in AJAX support.

    Unfortunately, while ASMX web services are still supported, WCF services are not due to the bug in WCF.

    When registering ASP.NET 3.x applications manually using Cassini Explorer, specify 2.0 as a target ASP.NET version.

February 10, 2007. General Availability Update: Better Stability and Wider Compatibility.

   Summary of New Features

   Summary of Bug Fixes

   New Features Details

  • Support of 64-bit versions of Windows, including Vista x64, Windows XP Pro x64 and Windows 2003 64-bit.

    UltiDev Cassini Web Server could not be installed on 64-bit versions of Windows. We added support of Windows Vista x64, Windows XP x64 and Windows 2003 Server x64.
  • Creating Windows Firewall exceptions for UltiDev Cassini service processes.

    Client browsers often failed to reach applications running under UltiDev Cassini because of the Windows Firewall blocking the incoming HTTP traffic. Starting with this release UltiDev Cassini creates firewall exceptions for Cassini Server service processes. Please note two important considerations:
    - Windows Firewall exceptions are created only for inside-the-LAN (Intranet) traffic. To allow Internet traffic through UltiDev Cassini, the scope of Windows Firewall exceptions for UltiDev Cassini needs to be changed.
    - UltiDev Cassini running as a command line program may still be blocked by Windows Firewall depending on which executable is launched.

   Bug Fixes Details

  • Missing Windows Scripting Host component caused cryptic error message.

    Windows Scripting (WSH) component is by default present on most of windows systems. However, if it's unregistered or removed, UltiDev Cassini would fail to install with hard-to-decipher error message. To fix the issue UltiDev Cassini Web Server installer will abort installation if WSH is not found on the computer and will provide information of where the WSH can be downloaded from.
  • UltiDev Cassini Web Server installation failed if metabase file had no registered application entries in it.

    Before this release UltiDev Cassini metabase file should have either contained one or mroe registered application entries, or should not exist. Cassini metabase file with zero entries caused various Cassini Server components to crash. The issue was fixed in this release.
  • Frequent subsequent modifications of the metabase file caused applications to fail get loaded on slow PCs.

    Modifications to UltiDev Cassini metabase file causes UltiDev Cassini Web Server to unload and then reload again all applications. The operation used to be asynchronous and therefore several modifications to the metabase file made before UltiDev Cassini finished to reload applications caused applications competing for the same IP port (port already bound error entries in the windows Even Log). This issue was fixed by synchronizing application reload calls.
  • Registered application with invalid physical path caused UltiDev Cassini Web Server service failure to start.

    Registering an application with invalid physical path caused UltiDev Cassini Web Server process to crash and stop serving all applications. Issue fixed by adding the check for whether application folder exists.
  • Uninstallation of UltiDev Cassini for ASP.NET 1.1 didn't make Cassini for ASP.NET 2.0 pickup the load.

    When UltiDev Cassini Web Server products for ASP.NET 1.1 and 2.0 are deployed side-by-side, uninstalling Cassini for ASP.NET 1.1 should have triggered Cassini for ASP.NET 2.0 to load ASP.NET 1.1 applications, which was not happening. Issue fixed by restarting Cassini for ASP.NET 2.0 service after Cassini for 1.1 was uninstalled.

August 4, 2006. GA Update Release

   Summary of Bug Fixes

   Bug Fixes Details

  • GoToApplication.aspx of Cassini Explorer used incorrect hostname as a base for redirected URL.

    Before this release Cassini Explorer's GoToApplication.aspx and CassiniConfigurationService.asmx always returned applications' URLs based on the server's machine name. For example, pointing your browser to http://domain.com:7756/GoToApplication.aspx?ApplicationID=<someGuid> would redirect to http://servermachinename:<ApplicationPort>/ instead of http://domain.com:<ApplicationPort>/.
    This created problems when accessing applications from outside the network. In this release the address in applications' URLs generated by Cassini Explorer will be the same as in GoToApplication.aspx and CassiniConfigurationService.asmx URLs.
  • Cassini for ASP.NET 1.1 upgrade was broken due to GAC installation issue in .Net Framework.

    Previous release of Cassini Server for ASP.NET 1.1 was incorrectly upgrading from previous version - the first General Availability release. Cassini Request Processor assembly failed to register in GAC during upgrade installation. This release will upgrade from any previous version.
  • Cassini for ASP.NET 1.1 was not releasing memory allocated for ASP.NET applications' AppDomains.

    All previous versions of UltiDev Cassini Web Server for ASP.NET 1.1 had a memory leak that was occurring when Cassini metabase file is changed. The reason for that is Server.Stop() method from original Cassini Web Server Sample was not unloading AppDomain created for each application.

  • Cassini Configuration API Help file is reinstated as a part of the Cassini Explorer installation package.

    Configuration API Guide was missing in the previous release even though the shortcut was created in the Programs group menu.
  • Cusom Setup.exe bootstrapper of Cassini for ASP.NET 1.1 package is now using TEMP folder instead of its execution folder when extracting Cassini components before installation.

    Setup.exe custom bootstrapper for ASP.NET 1.1 Cassini distribution was using its own folder to extract Cassini for ASP.NET 1.1 component before installing them. That could potentially lead to problems when installing applications distributed along with UltiDev Cassini for ASP.NET 1.1 from a network share.

July 10, 2006: General Availability Release

   Summary of New Features

   Summary of Bug Fixes

   New Features Details

  • New Cassini distribution model. Before this version UltiDev Cassini was packaged as a Merge Module. After extensive testing we determined that Merge Module concept provides for poor upgradeability of components. To give an example, if application A installed Cassini build 100, and application B installed upgraded Cassini build 200, both will work fine using build 200 until application B is uninstalled. Because of that Cassini components were made to survive their bundled applications' uninstallation. This ensures that the latest compatible version of Cassini server remains after multiple applications using UltiDev Cassini get installed and uninstalled. Even though uninstalling your application will not automatically uninstall UltiDev Cassini components, user will be able to remove UltiDev Cassini from Add/Remove Control Panel applet. Users of previous versions of Cassini, please read latest version of Cassini Developer's Guide for the information on how to redistribute your ASP.NET with UltiDev Cassini using custom Setup.exe bootstrapper.
  • Windows Vista compatibility. Windows Vista as of Beta 2 release was not creating ASP.NET Temporary Files folder for .NET Frameworks - a folder ASP.NET requires to be present at runtime. Even though it may get fixed before Microsoft releases Vista, we create the folder ourselves if it doesn't exist.
  • NOBROWSER command line parameter for Cassini Server executable. When running Cassini server as a regular Windows executable (in contrast to running it as a background service), Cassini used to always launch a browser showing default application page. NOBROWSER parameter lets Cassini start hosting an application under current logged user account, but will not pop up the browser.
  • UltiDev Cassini Programs group icons are for all users now. Before this version Programs group icons were created by Cassini installer for only user who launched the installation. This version makes icons visible to all users of the system. This is important for Windows Vista which often temporarily gets elevated into more powerful user account for program installations and other administrative tasks.

   Bug Fixes Details

  • SERVER_NAME server variable value. Cassini (including the one from Microsoft) used to always return server's IP address as a value of SERVER_NAME server variable, while IIS would return hostname if the requests was for hostname, and IP address if request was for an IP address. Particularly this lead to difference in WSDL binding addresses when WSDL is requested for web services under Cassini. Fixed.
  • Request.MapPath() method. Before this version passing "dir/" or "dir" to Request.MapPath() method would cause Cassini 1.1 to return the same value without the trailing slash, while IIS and Cassini 2.0 would return slash if it was passed. That caused incompatibility issues between Cassini and IIS. Fixed.
  • Cassini Explorer port number value validation. It was often impossible to save application's configuration after editing its settings in Cassini Explorer due to a bug in ASP.NET range validator. Fixed.

March 14, 2006: Release Candidate 1

   Summary of New Features

   Summary of Bug Fixes

   New Features Details

  • Applications can be kept pre-loaded in memory for quick first-page response.

    Since UltiDev Cassini Web Server is likely to be used in a relatively low-load scenarios, it's likely applications could often sit idle and thus be unloaded by ASP.NET to preserve memory. In low-load scenarios users are more likely to face long first-page-served time due to idle application need to be loaded, than high-traffic sites where applications are kept in memory by lots of requests. To counter perceived poor performance, RC1 added an per-application option to keep applications loaded in memory at all times. This ensures very quick application response even if application is not heavily used. The tradeoff is higher system memory consumption.
  • Registering and un-registering applications with Cassini does not require writing code anymore.

    If you are a developer who ships an application bundled with UltiDev Cassini Web Server, your installer will have to register the application with UltiDev Cassini Web Server as a part of the installation process, and unregister as a part of uninstallation. Before RC1 that involved writing a custom installer steps code for your setup project. RC1 added a typical register/unregister code to the CassiniConfiguration assembly, which can be used for your setup project custom install steps to register applications with UltiDev Cassini Web Server without writing any code.
  • Web Services under Cassini don't need to have static ports anymore.

    It's highly recommended that your installer allowed UltiDev Cassini Web Server to find and assign free TCP port to your application. There was always a port-independent way to redirect a browser to your web application. But if you used Cassini to host a web service, your web service client was unable to find out  programmatically the exact URL of the your service. RC1 added a web service to the Cassini Explorer that returns either port, or the whole application URL for a given application ID. After you installed Cassini RC1, look at http://localhost:7756/CassiniConfigurationService.asmx to find out how your web service clients can retrieve application URL information. Please note that Cassini application configuration changes trigger brief downtime as Cassini reload applications. If your web service call does not go through, catch the exception and retry the call a few seconds later.
  • Cassini Explorer home page updates state of running apps without Refreshing the page.

    Cassini Explorer home page displays state of registered applications (Running or Not Running). Before RC1 it took hitting browser Refresh to see if state has changed. RC1 added an Ajax-based callbacks that update application state information every 30 seconds without reloading the entire page. Please note that automatic state updates do not change the list of application - only state info is updated. If applications were registered or unregistered, browser Refresh action is required to update the list of applications on the application summary page.
  • TCP/IP settings in Registry updated during Cassini installation for best performance.

    Windows XP comes with TCP/IP settings not tuned for web server usage. This may lead to very low throughput under stress load, because within seconds Windows will start running out of ports that can be used to accept incoming connections. RC1 installation updates Windows Registry so that it never runs out of ports even under stress load. Please note that it requires system reboot for modified settings to take effect. UltiDev Cassini Web Server installation does not trigger system reboot since in most cases UltiDev Cassini Web Server is unlikely to be used under heavy load. If your application is expected to serve dozens or hundreds requests per second, your application bundled with Cassini needs to trigger system reboot after installation.

   Bug Fixes Details

  • Memory leak in Cassini 2.0 is fixed.

    UltiDev Cassini Web Server 2.0 Beta 1 was leaking memory due to the bug in original Cassini code. (Cassini 1.1 Beta 1 does not have this problem). The issue is fixed in RC1.
  • InstallState file corruption in Cassini 2.0 when deploying multiple Cassini applications side-by-side is fixed.

    Multiple applications bundled with UltiDev Cassini Web Server 2.0 Beta 1 deployed side-by-side on the same system might have prevented last application from being uninstalled correctly. The issue is fixed in RC1.
  • Application Event Log settings changed during Cassini installation to avoid OS running out of space.

    UltiDev Cassini Web Server uses Windows Application Event Log quite extensively for logging and error tracking purposes. Windows XP default settings cause applications to crash if Event Log is full. Cassini RC1 installer changes default application log settings to significantly increase the storage size for application events, and to overwrite oldest events once event log runs out of space.


December 24, 2005: Beta 1 - Initial Release