image image Home About Products Downloads Support Links Contact
image

IntraWeb
» News
» Blog
» General features
» Why IntraWeb?
» How does IW Work?

Bundled Users
» Delphi 7 Users 
» Delphi 2005 Users
» BDS 2006 Users
» Delphi 2007 Users

Technical info
» Why IntraWeb?
» Comparison with
   Other Web Tools

Resources
» Getting Started
» Documentation
» Articles
» Books
» Third Parties
» Tutorials
» Training

What others say
» Case Studies
» Companies using IW
» Demos
» Magazine Reviews
» User Quotes

Miscellaneous
» Just for Fun

Registered Users
» Bug System
» Login





Copyright
2002 - 2008
Atozed Computer
Software Ltd.

image
Buy Online   Download Support  FAQ Questions
Atozed Home  »  IntraWeb  »  FAQ

How do I install IIS6?

IIS 6 is available on Windows 2003 only and is installed by default. You can not install it on Windows XP or below.

How do I deploy an ISAPI DLL to IIS6?

Basically, you can use IIS6's "IIS 5 compatibility mode" to deploy the same way as you did for IIS5. We do not recommend, nor do we support, deploying via compatibility mode. Please use IIS6's "full mode":

  • Create a new Application Pool for your IW applications
  • Limit the pool to 1 (one) worker process
  • Disable the scheduled recycling (or set it to values that won't hurt your application)
  • Grant sufficient permissions to the account that executes the App Pool (especially the directory and files where your ISAPI is installed)
  • Set an explicit ServerController.CacheDirectory and grant sufficient permissions to it
  • Set ServerController.ComInitialization to ciNone

How do I debug an ISAPI DLL on IIS6?

Note: These steps won't work on early IIS6 versions (Betas and RC's).

  1. Delphi needs to be installed on the machine where IIS6 is running. We have not yet evaluated if remote debugging works.
  2. Enable "external debug symbols" in the project's linker options, and recompile your application.
  3. Grant the "Debugger" role to the user account which is used for the debugging.
  4. On a command line do a "net stop w3svc" to stop the "normal" web service. (This will bring your IIS6 offline!!)
  5. Run w3wp.exe from the command line with the -debug switch (i.e."w3wp -debug")
  6. Set the output directory of your project to have Delphi put the compiled ISAPI dll directly into the ISAPI directory.
    Note: For BDS 2006 you have to put \\?\  in front of the output directory. For example: \\?\D:\intepub\scripts
  7. Attach the Delphi debugger to that process with the ISAPI project open.
  8. Instead of doing steps 3 and 4 you can set "w3wp -debug" as the "Host Application" in your ISAPI project and just hit "Run" in Delphi.

What is a Worker Process?

A worker process is the "program" that will run all ISAPIs and their threads on IIS6.  As to the nature of processes, these processes are completely isolated. If one process hangs or even terminates, all other Worker Processes will continue to run.  This provides some protection against ISAPI applications that become unstable: if there is just one Worker Process (as in IIS5), then the whole Web server stops working, i.e., all your Web sites are down. 

What is an Application Pool?

An Application Pool is a unique, separate "space" in which applications can run, a space that can be configured with a specific number of Worker Processes, specific automatic recycling options, etc. You can setup different Application Pools for different ISAPI's and directories which may have different needs.  One big advantage is that you can recycle App Pools (i.e. all ISAPI applications in that pool), and not just single ISAPIs or directories.  If you know, for example, that one of your ISAPIs is behaving badly (eats up memory, crashes unexpectedly, etc.) you can put it in a "Frequent Recycle Pool" and set its auto recycle options to a short interval or to recycle when it hits the 100MB barrier.

I know what Recycling means for paper and bottles, but what the heck does IIS 6 mean by "Recycle"?

Recycling an Application Pool means to unload all ISAPI DLL's (and free associated resources) in that pool.  By automatically recycling application pools that are not being used less memory and resources are tied up on the server, increasing resource utilization and improving server performance.  This is basically web server "garbage collection."

Why do I get an error like "Thread mode can not be reset"?

In IIS5 you had to explicitly set ServerController.ComInitialization to ciMultithreaded if you were using COM stuff like ADO. That setting automatically did the required COM initalization for all IW session threads. IIS6 initializes all threads itself, that is, you must not do it yourself, thus ciNone should be used. However, IW tries to recognize IIS6 and ignores the ComInitialization setting if it detects IIS6, but you still have to remove all CoInitialize() calls which you might have added for custom threads.




CodeGear - Where Developers Matter