At the end I have not found another way to accomplish my goal, but to create a special ISAPI filter just for this. This is a simple ISAPI filter, that handles the SF_NOTIFY_URL_MAP server event and changes the pszPhysicalPath variable according to extension mapping settings. To make it a little more general, I made it to support not only mapping from extension-less paths, but to map from any to any extension. The mappings are set in Windows Registry.
How it works, basically:
- A request gets to the HTTPD server, say to URL /vroot/file
- The server maps /vroot/file to some physical path, say \disc\vroot\file
- The server calls the filter with the physical path, and the filter maps it to, say, \disc\vroot\file.asp, according to it's settings.
- The server then handles the file correctly with the asp.dll, according to the ScriptMap registry settings.
In case someone needs it, I've published the source code on GitHub.