Recently I inherited a project that's running on NT/IIS/SAP. I don't get to change the NT/IIS bit because of SAP at the moment. Long term I will get to move the web element onto a BSD/Apache box, but for the moment I have to struggle on with NT/IIS. To make mattters worse, I'm not root on the remote IIS box, and I'm developing locally on NT/Apache!
The process is very simple, upload a single file, parse it with an XML parser to see if it's well formed, if it is POST it on to a SAP Business Connector, collect the result, and return a HTML page to the browser.
Everything works PERFECTLY on my NT/Apache box, the file goes up, you get a nice CGI.pm error if you try to overload it, a nice error if you send non-well-formed XML, a nice error if it can't connet to SAP, and if everything goes well, a nice HTML sucess page. It even logs things nicely to a text file.
On IIS I discovered things were not as expected (and thanks to the many Monks who helped here).
- You can't pass anything on the shebang line to IIS, you have to hack the registry! - Taint with Perl on NT/IIS and Alternatives to Taint Checking?
- IIS doesn't send CGI::Carp messages to the log file, but directly to the browser.
- Lincoln's DoS protection of limiting file upload sizes, doesn't seem to do anything - the file gets uploaded, but the process seems to die.
- IIS seems to be buffering the output, so the browser times out while things are waiting - on Apache I have things running unbuffered so I can send something to prevent a dropped connection. - Suffering from Buffering
I'm sure that some things can be fixed, but as I am forced by MS to use a GUI, the IT department fobid me from using it remotely, as the box is in the DMZ, so I have to ask to go into a freezing cold server room and log in as root locally (they don't like that either), and use the stupid IIS GUI!!
CGI.pm is the default way of doing CGI in Perl, I've used it with Apache, EMWACS HTTPs and Netscape/iPlanet on NT, Linux and Solaris, with no problems. Yet on NT/IIS I've had no end of problems. Lincoln it's creator doesn't even have an NT box to test it with - we're working through some other NT problems as I write!
While I accept that I should go away and learn more about IIS, the fact that it's so different from anything else, does so many illogical things, and seems to heap complexity on for no good reason, doesn't make me want to use it.
I also know that I shouldn't be doing things cross-platform either....
End of rant, I feel much better now....
P.S. If anyone has any useful IIS tips I'd apreciate them....