Using Olympia for session management requires a supertcpchannel, correct?
When IIS tries to shutdown an ISAPI dll with a TROSuperTCPChannel
that is there for talking to Olympia the dll hangs on shutdown at the line where it calls fw.WaitFor
in unit uROBaseSuperChannel
in procedure TROBaseSuperChannel.SetInactive
.
This also happens only if the TROSuperTCPChannel
is set to false.
The destructor sets the TROBaseSuperTCPChannel.Active to false thus initiating the noted behavior.
To replicate:
Run the client exe without debugging.
Run the w3wp.exe with the -debug switch as the host of the server dll.
In the client.exe enter the website where the dll is running and press Get Server Time.
Press q in the console window to shutdown.
Set two breakpoints in the dll’s WebModuleDestroy procedure of Unit1. One at the ROSuperTCPChannel1.Active := false;
line and the other on the line after that.
Observe that the first breakpoint gets hit but not the second.
Here is a sample test project if that helps. SuperTCPChannelTest.zip (2.5 MB)