ISAPI Deployment FAQ
My Standalone application works fine, but when I deploy as an ISAPI I
get an error: -214746759
This error normally indicates one of two things:
1. You are using COM and have not set ComInitialization to ciMultiThreaded in
the ServerController. For ISAPI this needs to change from ciNormal to
ciMultiThreaded. 2. You do not have the exports clause in your DPR
project file. Due to ISAPI pooling, this clause needs to be set explicitly in
the DPR whether or not you use ISAPI pooling. Check the Migration
Guide in the manual for more information regarding this.
How do I deploy to IIS 5?
This is covered in depth in the IntraWeb
manual.
How do I deploy to IIS 6 (Windows 2003)?
This is not yet described in the manual, please see the IIS 6 FAQ for the required steps.
Is there any way to update my ISAPI application?
Microsoft does not provide good remote management for ISAPI applications. You
may wish to try the IWServerManager which comes with
IntraWeb or the ISAPI Loader.
When deploying as ISAPI, the following error
occurs: EOSError with message "System Error. Code: 5. Denied Access".
Delete the cache directory and restart, or grant the cache directory read /
write access by IUSR_<machine name> or the user the ISAPI is set to run
as.
When I convert my application to ISAPI it no longer
works?
In most cases it is a permissions problem with your code. Since we cannot
know what every user's code does, we cannot tell you exactly how to fix it.
Please try the following steps:
-
Try to deploy the GuessDLL demo. If it works, there is a problem with
your code in your application, very likely permissions or local
configuration.
-
Try setting the application directory, files and subdirectories to
"Everyone, full control"
-
Try to run your application as the admin user (configured from IIS
console). If it works, it is a permissions problem.
-
If your application is still failing you will need to debug the ISAPI DLL
directly. This article on Borland's CodeCentral shows how to do that
with IIS5. In genral debugging ISAPIs is more easy with Sambar though, there you just need to set
sambar.exe as the ISAPI dll's host application.
If you determine the issue to be permissions, after you have it working with
increased permissions you should then fix the problem code, or lower the
permissions again and explicitly allow the extra permissions needed. Leaving the
permissions fully open as configured during testing is a very large security
hole.
How do I deploy a Delphi 2005 ASP.NET assembly built with
Intraweb into IIS?
First of all, make sure the NET framework is installed on the deployment
machine and that the ASP.NET handlers are configured in IIS. Now, assuming the
assembly to deploy is the .NET Guess demo that ships with Intraweb for Delphi
2005, follow this steps:
For IIS5:
1) Build the project (for the typical installation, project path is:
C:\Program Files\IntraWeb for Delphi 2005\Demos\NET\Guess).
2) Create a new virtual directory in IIS. It can be a subfolder of the
wwwroot or located somewhere else on the disk. For example, create a new
subfolder called Guess in wwwroot and create a virtual directory named Guess to
point at it. Allow 'Scripts and Executables' execute permission for the virtual
directory.
3) Copy Guess.dll and web.config to the newly created virtual dir.
4) Test the application by this URL:
http://localhost:IIS_PORT/Guess/intraweb.aspx
It should display the main form.
For IIS6:
Check the FAQ entry called 'How do I deploy an ISAPI DLL under IIS6' under IIS6 FAQ
then continue with steps 3 and 4.
I deployed the Delphi 2005 Intraweb ASP.NET assembly according to the
steps in the FAQ, but when using the application I get a message saying 'File or
assembly <xx>, or one of its dependencies, was not found'.
This means that some of the dependant assemblies of your application were not
found. Check that the dependant assemblies are in the GAC. Copy the ones which
are not there in the same location as your application.
|