How to use unregistered COM components from ASP .Net 1.1 Applications
ASP .Net 1.x has built-in support for Windows unmanaged (win32) side-by-side
functionality. When a request is being processed ASP .Net 1.x uses
CServiceConfig
and the IServiceSxsConfig
interface to configure the activation context to use web.manifest
manifest file from the application root folder.
This was originally designed to behave the same way as the
ASP manifest configuration but over time drifted
away from that goal. Windows 2003 Server service pack 2 actually removed the support for win32 side-by-side in ASP
.Net 1.1. This was later corrected in a hotfix KB939044.
This support was entirely dropped in ASP .Net 2.0 and a different approach is
necessary (How to isolate ASP .Net 2.0 web application).
To configure Win32 side-by-side for the use of ASP Net 1.x application:
- Create a private or shared assembly (or assemblies) with the components you need to use.
- Install these assemblies on the web server; copy to a subdirectory of the application directory if private, install with MSI if shared.
- Create a private assembly referencing all the above private and shared Win32 assemblies. Name the project
web
which will make the manifest nameweb.manifest
. - Copy this manifest to the application directory on the server.
- There is no need to configure the manifest in application properties, as is
the case with ASP, because ASPNET.dll does not check that configuration item
anyway. The manifest name is hard-coded to
web.manifest
.
The activation context created by loading
web.manifest
is used to access Win32 (non-managed) COM classes
and DLLs.
Note that this does not affect the way CLR looks for and loads .Net (managed) assemblies.