Does anyone have a bulletproof method (in C# ideally!) of determining if ASP.Net is properly registered on your computer ?
I am writing an installation program for an ASP.Net application and I need to know whether I should run
At the moment we always run
aspnet_regiis – I to ensure that ASP.Net is registered properly but this undesirable because it prompts a restart of all the application pools.
There are several useful pages on the web (e.g. http://www.codeproject.com/KB/cs/iisdetection.aspx) but as the comments in that post show, it is quite often the case that the registry reports that ASP.Net is registered but
aspnet_regiis still needs to be run to configure IIS. The user 'JonB' posted something that looks like it should work for IIS6 (and IIS7 with IIS6 compatibility enabled) but I would still need to write separate detection code for IIS 7 with IIS6 compatibility mode disabled.
So has anyone cracked this nut already? If so please let us know as it will be a time saver. Otherwise I will try and port the C++ solution into C# for IIS6 and for IIS7 I will look examine the
<isapiCgiRestriction> section of
<add path="%windir%\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll" allowed="true" groupId="ASP.NET v2.0.50727" description="ASP.NET v2.0.50727" />
Does anyone know if things are the same/different in Windows 7?
First I would try running
aspnet_regiis -lv. This should give you an output like:
that you can easily parse to verify that your target version is installed and valid. If it is not, you'll have to go the
Also, given that you can do this check in C#, you could add a test page to your ASP.NET application. After what you would normally consider a successful installation, do a
HttpWebRequeston that test page. The page itself can be as simple as an empty page and as complicated as running a self-check of the installation (file/folder permissions, DB configuration, etc.) and would only return a HTTP 200 if everything is ok. Any timeout or error indicates a bad install. Then,optionally, delete the test page.