Hi there!
Is it possible that when you think monitoring service has crashed, it's just application's AppDomain is being recreated? Would you mind sending us Event Log entries capturing monitoring service crash?
Also, do you see these strange 404s and 500s only for limited period of time after application files were changed, or does the application remain in the broken state for more than 2 minute/permanently?
Here's a little bit of a background info. Each web application runs in an ASP.NET AppDomain. Our UWS.AppHost processes may host one or more such AppDomains - one AppDomain per app. When changes are made to web.config, content of Bin folder and in some other cases, ASP.NET unloads its AppDomain and tells the host - web server - to load the application into another AppDomain with updated configuration. This presents a few challenges for the web server design. If it was possible to listen to inbound requests outside of the application's AppDomain, like IIS does, then it would be possible to implement AppDomain start/retirement routine without a single request being lost - listener would just hold on to the request until application AppDomain is ready to process it. But due to HttpListenerXXX set of .NET Framework classes (used by UWS to process http requests) not being cross-AppDomain friendly, our web server has to listen to inbound requests inside the applications' AppDomains. This means that subsequent rapid changes to the application may create multiple AppDomain starts and retirements, creating a flurry of very expensive activities related to parallel loading/unloading of multiple AppDomains for the same application, which unfortunately leads to some requests being lost. On the plus side, not having to pass requests across AppDomain boundaries helps UWS performance quite significantly.
The bottom line is that with multiple rapid application file changes, which may cause multiple application load/unloads, 404 and 503 responses should go away shortly, and we won't be able to improve it much as .NET Framework HttpListener class limitations won't let us do better. This problem is significant if you observe that application remains in the broken state. Please let us know if that's the case.
Best regards,
UltiDev Team.
Please donate at
http://www.ultidev.com/products/Donate.aspx to help us improve our products.