In Geocortex Essentials, we use Microsoft's WPF (Windows Presentation Framework) libraries to generate images for printing and exporting. Some of our Workflow activities use Esri's WPF API, which also uses WPF libraries. The issue described in this article has been reported by customers who have a lot of users, run many workflows, process many print jobs, or some combination of those. The error messages that are reported vary, but always include some type of System.ComponentModel.Win32Exception:
- System.ComponentModel.Win32Exception: This function is not supported on this system
- System.ComponentModel.Win32Exception: The operation completed successfully
- System.ComponentModel.Win32Exception (0x80004005): The parameter is incorrect
- System.ComponentModel.Win32Exception: Not enough storage is available to process this command
- System.ComponentModel.Win32Exception: The wait operation timed out
- System.ComponentModel.Win32Exception: Class does not exist
After extensive investigation, we were not able to determine any metric (performance counter, memory usage, available desktop heap space, dispatcher threads, etc) that would allow us to monitor the Essentials application and gracefully handle or avoid the errors. It was our understanding that WPF objects were never intended for use within a long-running server process, even though they seem to work fine for the majority of our use cases and customers.
The most common workaround is to configure the Essentials application pools to recycle more often than the default 29 hours. We recommend starting with a daily or twice-daily recycle, moving up to an hourly one if necessary. Some customers may have chosen to configure a cluster of Essentials servers to help handle the load, but this is not recommended.
If the site is configured to use workflows, those workflows can usually be optimized or rewritten to minimize resource requirements. However, the best solution is to migrate to VertiGIS Studio Workflow.
This issue is only present in Geocortex Essentials. WPF objects are not used by VertiGIS Studio Workflow, VertiGIS Studio Reporting, or VertiGIS Studio Printing, and we have no plans to use WPF in any future products.