Professional Active Server Pages 3.0 LY F M Richard Anderson, Chris Blexrud, Andrea Chiarelli, Daniel Denault, Alex Homer, Dino Esposito, Brian Francis, Matthew Gibbs, Bill Kropog, Craig McQueen, George Reilly, Simon Robinson, John Schenken, Dean Sonderegger, Dave Sussman A TE Wrox Press Ltd Professional Active Server Pages 3.0 © 1999 Wrox Press All rights reserved No part of this book may be reproduced, stored in a retrieval system or transmitted in any form or by any means, without the prior written permission of the publisher, except in the case of brief quotations embodied in critical articles or reviews The author and publisher have made every effort in the preparation of this book to ensure the accuracy of the information However, the information contained in this book is sold without warranty, either express or implied Neither the authors, Wrox Press nor its dealers or distributors will be held liable for any damages caused or alleged to be caused either directly or indirectly by this book Published by Wrox Press Ltd Arden House, 1102 Warwick Rd, Birmingham, B27 6BH Printed in USA ISBN 1-861002-6-10 Trademark Acknowledgements Wrox has endeavored to provide trademark information about all the companies and products mentioned in this book by the appropriate use of capitals However, Wrox cannot guarantee the accuracy of this information Credits Authors Richard Anderson Chris Blexrud Andrea Chiarelli Daniel Denault Alex Homer Dino Esposito Brian Francis Matthew Gibbs Bill Kropog Craig McQueen George Reilly Simon Robinson John Schenken Dean Sonderegger Dave Sussman Additional Material Matthew Bortniker Charles Campbell James M Conard Richard Harrison Keith Stanislaw Kent Tegels Managing Editor Chris Hindley Editors Craig A Berry Dan Maharry Lisa Stephenson Adrian Young Development Editor Liz Toy Index Andrew Criddle Project Manager Sophie Edwards Technical Reviewers Matt Bullock Chad DePue Andrew Enfield Alexander Haneng Robert Howard Shawn Jackson Jeff Johnson Stephen Kaufman Brad Kingsley Ajoy Krishnamoorthy Dave Navarro Robert Oliver Matthew Reynolds Ulrich Schwanitz Steven Smith Kevin Spencer Andrew Stopford William Storey Adwait Ullal Design/Layout Tom Bartlett Mark Burdett William Fallon Jonathan Jones John McNulty Illustrations William Fallon Jonathan Jones Cover Chris Morris Concept by Third Wave About the Authors Richard Anderson Richard Anderson is an established software developer who has worked with Microsoft technologies for nearly 10 years He works for a small yet globally known software house in Peterborough (England), where he currently holds the position of "Research and Development Manager" What that means is that he plays with lots of great new technologies, and then tells people how they work, ensuring they are correctly understood and adopted correctly and successfully in new applications He also writes applications too, and is responsible for mentoring and managing C++ and VB developers Richard can be contacted via his private email account rja@arpsolutions.demon.co.uk Chris Blexrud Chris Blexrud, MCSD, is a consultant for Born Information Services, Inc (http://www.born.com), a Microsoft Solution Provider Chris's main areas of expertise are in Microsoft technologies such as ASP, VB, COM/DCOM, MTS, COM+, and various BackOffice products When Chris is not developing business solutions, he enjoys snowmobiling and hunting in northern Minnesota and spending time with family and friends Chris can be reached at chris.blexrud@born.com Andrea Chiarelli Andrea Chiarelli is an independent consultant with experience in software design and training He holds a degree in Computer Science and a Master in Software Engineering, works for software companies and training centers in Tuscany (Italy) and is a regular contributor to Computer Programming, an Italian programming magazine His experience spans from database design to multimedia software developing In recent years he's specialized in designing Internet and Intranet systems developing Web-based applications and interfacing databases to the Web primarily using Active Server Pages technology Daniel Denault Daniel Denault is a developer and network administrator developing Internet applications and doing high security network configuration designs and installations in the behavioral healthcare industry Dan Denault is also an independant consultant These applications are developed using the following technologies Customized ActiveX controls, ActiveX DLL's, Active Server Pages, Word and Excel OLE automation, JavaScript, VBScript, DHTML, IIS, and SQL Server 7.0 Daniel Denault can be contacted at admin@csopgh.com Dino Esposito Dino is a free-lance consultant based in Rome, Italy He specializes in scripting and COM development and worked for Andersen Consulting focusing on development of Web-based applications He loves writing and is a contributing editor to Microsoft Internet Developer for which runs the Cutting Edge column He regularly contributes also to Microsoft Systems Journal, MSDN News, Windows Developer's Journal Get in touch with Dino at dinoe@wrox.com Brian Francis Brian Francis is the Technical Evangelist for NCR's Retail Self Service Solutions From his office in Duluth, Georgia, Brian is responsible for enlightening NCR and their customers in the technologies and tools used for Self Service Applications Brian also uses the tools he evangelizes in developing solutions for NCR's customers He has worked extensively with Wrox Press as a technical reviewer and has also coauthored on a number of projects Matthew Gibbs Matthew is currently working on Internet technologies at Microsoft and pursuing a graduate degree in computer science from the University of Washington As always, he enjoys using C/C++, but has become a fan of the rapid development capabilities provided by ASP At present, his studies are focused on database management systems, their design and use In particular, he is interested in the potential for advancement in data mining techniques and technologies Alex Homer Alex came to writing computer books through an unusual route, including tractor driver, warehouse manager, garden products buyer, glue sales specialist, and double-glazing salesman With this wide-ranging commercial and practical background, and a love of anything that could be taken to pieces, computers were a natural progression Now, when not writing books for Wrox, he spends his spare time sticking together bits of code for his wife's software company (Stonebroom Software - http://www.stonebroom.com) or just looking out of the window at the delightfully idyllic and rural surroundings of the Peak District in Derbyshire, England Bill Kropog Bill Kropog is a full-time consultant for a Web and software development firm in New Orleans, Louisiana Bill specializes in finding new and creative ways to display and manipulate data with Active Server Pages He uses Visual InterDev 6.0 for most of what he develops, with frequent hops into Visual Basic 6.0 He also creates most of the graphics he uses in his projects (Corel Xara 2.0 and Adobe PhotoShop 5.0), making him a well-rounded developer XML is the latest thing on Bill's plate, and, being a former journalist, he'd like to develop XML-based standards for online publications to make it easier to share news and to bring ordinary journalists into the online world Craig McQueen Craig is a Principal Consultant at Sage Information Consultants, Inc His role at Sage is to guide clients in their adoption of Internet technologies into their existing business Recently, he led an e-commerce implementation of Site Server at a major consumer electronics company Previous to consulting, Craig led the development of two small retail Internet products: InContext WebAnalyzer and InContent FlashSite Craig has a Master of Science degree from the University of Toronto where he specialized in HumanComputer Interaction George Reilly George V Reilly has been a member of the IIS/ASP development team since shortly before ASP 1.0 shipped at the end of 1996 Nowadays he is responsible for IIS performance He has been doing his best to write tight code since he discovered the BBC Micro in his native Dublin, Ireland in 1982 In retrospect, he has a hard time believing that he found enough time to co-write "Beginning ATL COM Programming", Wrox Press, 1998 Simon Robinson Simon Robinson lives in Lancaster, UK, where he shares a house with some students He first encountered serious programming when doing his PhD in physics He would program in FORTRAN when his supervisor was watching (physics lecturers like FORTRAN) and C when he wasn't The experience of programming was enough to put him off computers for life, and he tried to pursue a career as a sports massage therapist instead until he realized how much money was in programming and wasn't in sports massage He then spent a year writing some very good cardiac risk assessment software but he and his business partner never got round to selling it to anyone Finally, driven by a strange lack of money, he looked for a—whisper the word quietly—job Which somehow ended up—after a year of his working for Lucent Technologies in Welwyn Garden City—leading to him writing books about computers You can visit Simon's web site at http://www.simonrobinson.com/ John Schenken John Schenken is currently Software Test Lead on the Visual Basic Server Enterprise Team for Microsoft He was previously Test Lead for the Microsoft Script Debugger that shipped with Windows NT Option pack and is still responsible for it in Windows 2000 He has a computer science degree from Texas A & M university He has programming experience involving MSMQ, SMTP, NT Event Log, NT Perf Counters, ASP, business objects and ADO (basically wide experience writing end-to-end web applications involving business objects) Dean Sonderegger Dean is responsible for the technology and development of products at Ultraprise Corporation based in Sterling, Virginia He's worked with Active Server Pages since its inception and specializes in internetbased commercial application development The majority of his spare time is spent chasing his two sons Crawford and Jordan, or with his lovely wife Karen David Sussman David has spent most of his professional life as a developer, starting with Unix and C, in the days when the Internet was only used for Usenet newsgroups He then switched to Microsoft development languages, and spent several years moaning about the lack of pointers in Visual Basic Like Alex, he lives in a quiet, rural village, this time in Oxfordshire He spends his spare time convincing himself that he'll get off his backside and get fit He never does Introduction They say that everyone can remember exactly where they were, and what they were doing, when one of those major events in history occurred It could be when President Kennedy was shot, it could be the day that Elvis Presley died, or it could just be something less historic and much closer to home – such as the first time you saw 'Doom' One of our colleagues firmly believes that the introduction of Microsoft's Active Server Pages (ASP) technology, or Denali as it was called then, was one such important event He backs this up by remembering exactly what he was doing at the time He'd just finished work on a book about Web database connectivity techniques, ending with the jewel-in-the-crown at that time — the Internet Database Connector (IDC) The rapid addition of an extra chapter before going to press, to cover this exciting new ASP technology, was the order of the day In fact that single chapter was probably the reason for most of the book's sales, because suddenly every developer wanted to be 'into' ASP All this sounds like it was a long time ago, and we have all become quite blasé about Active Server Pages and whole range of techniques that have built up around it But (at the time of writing) this was less than three years ago Yet here we are, with version 3.0 of ASP just released, and with a feature set, performance and capabilities that leave the original version 1.0 standing in the dust What Is This Book About? This book is about Active Server Pages 3.0, as included with Windows 2000 However, because ASP is now a core part of so many Web-oriented features within Windows, this book covers a far wider area than just how ASP works ASP is maturing all the time to encompass more integration with other Windows services and software, and so there are many other areas that impinge directly on the use and performance of ASP Introduction In particular this involves the Windows operating system itself, including the new security features of Windows 2000, and the Internet server software that comes with Windows 2000 – Internet Information Server (IIS) On top of this are the other less obvious services, which also have a direct or indirect effect on the way that ASP works These include COM+, the various Internet service administration tools, and – indirectly – the many other services and installed software packages that either provide additional functionality to ASP, or which have interfaces that are available for use in ASP In fact, this is really where ASP comes into its own, and why it has become such an integral part of working with Windows on the Internet ASP introduced the concept of using ActiveX interfaces or discreet component objects (separate controls that provide a COM interface) within Web scripts, rather than running external executable programs as had previously been the norm in other Web scripting languages (such as Perl) This integration with COM and ActiveX means that ASP can effectively access anything on the Web server, or a connected network, which provides a suitable interface From this alone, a huge market has grown up for components and objects that implement or encapsulate specific functions More than that, almost all installed software and services in Windows either include a set of specific ActiveX components, or directly exposes a COM interface, to allow ASP to access it So, as well as chapters all about the roots of ASP, the base object structure, and how it's used, you'll also see chapters that demonstrate the many different ways that ASP integrates seamlessly with other software and services in Windows One of the most obvious of these is access to data in a relational database or other type of data store (such as Active Directory), and you'll see several chapters devoted to these topics We'll also explore the intimate relationship between Internet Information Server and COM and the new COM+, and see how ASP has changed the way that it hosts and executes external components to provide better performance and scalability This also affects the way that components are designed and built, and we'll be exploring this topic in some depth as well Who Is This Book For? When Active Server Pages was first introduced, we produced a book covering that initial version from the point of view of a beginner to the technology Fair enough, because at that point everyone was a beginner However, the runaway success of ASP means that this is no longer the case There are many millions of knowledgeable and active ASP developers out there who want hard-core technical coverage of ASP in its new version Then, when version 2.0 of ASP was released, we produced a separate beginner's guide, and this is also the case with version 3.0 This book is the professional-level version, and is aimed at two categories of developers Firstly, it is designed to satisfy the needs of those who are already well practiced in the skills of ASP and server-side Web application development Secondly, it will be a useful and fast-track guide to those who are less familiar with ASP, but have a server-side Web application development background – perhaps in the use of Perl, IDC, etc For newcomers to Web applications and dynamic Web page creation, we recommend you look at Beginning Active Server Pages 3.0 (ISBN 1-861003-38-2) first Introduction Version 3.0 of ASP in itself is not an earth-shattering upgrade In fact, ASP is reaching the point where there isn't much more that can be done with it However, the wish lists of most developers should be fulfilled with the new version There are many subtle changes to the way that it works, in the scripting engines that are included, in the Web server (IIS) itself and in the administration tools There are also some fundamental changes in the IIS/COM(+) relationship, which it's important that you grasp If you didn't really much with COM and MTS in version 2.0 of ASP (a lot of people managed to ignore them), then now is the time to get to grips with them and start building pages and components to integrate with it What Does This Book Cover? Conceptually, this book is divided into several sections This allows us to cover widely differing ASP-related topics in an orderly sequence, and helps you to grasp the basics of the way that ASP works before going on to learn about higher-level features that depend on these core topics Section is all about ASP Basics It describes the changes to ASP in version 3.0, the ASP Object Model, and all the basic concepts required for using ASP script and external components Section covers ActiveX Data Objects (ADO) and data access issues in general – including XML ADO is now the standard communication technology for all Microsoft applications, and its use is almost uncontested in ASP Section introduces the issues involved in building components for use with ASP, and understanding how COM and COM+ change the component environment Section is all about integrating ASP with BackOffice applications such as Microsoft Message Queue Server, Collaborative Data Objects and Microsoft Exchange, Active Directory, etc Section moves on to look at how ASP is used in the enterprise It examines issues of security, performance, scalability, etc Section contains a great deal of useful reference material in the form of appendices and tables You don't have to read the whole book from cover to cover, or in any particular order However, if you are coming to ASP from another Web development environment, you will certainly want to cover sections one and two in some depth to get a firm grasp on the fundamentals and see how they relate to other Web-development development languages and techniques On the other hand, those battle-hardened ASP veterans amongst you may prefer to look through Chapter to see what's new and what's changed in version 3.0, before skipping from chapter to chapter to see how these changes affect you Of course, if you prefer to lay in the bath and read it from cover to cover, then please don't let us stop you But I bet your arms soon get tired What Do I Need To Use This Book? You always know when you get to this point in a book what it's going to say Yes, you need to have Active Server Pages installed to be able to use Appendix F StreamWriteEnum Name Value Description adWriteChar Writes the specified string to the Stream adWriteLine Writes the specified string and a line separator to the Stream stWriteChar Writes the specified string to the Stream stWriteLine Writes the specified string and a line separator to the Stream Name Value Description adClipString Rows are delimited by user-defined values Name Value Description adXactAbortRetaining 262144 The provider will automatically start a new transaction after a RollbackTrans method call adXactAsyncPhaseOne 524288 Perform an asynchronous commit adXactCommitRetaining 131072 The provider will automatically start a new transaction after a CommitTrans method call adXactSyncPhaseOne 1048576 Performs a synchronous commit StringFormatEnum XactAttributeEnum 1220 ADO 2.5 Constants 1221 Appendix F 1222 Useful Information Server-Side Include Directives and Utilities This appendix describes the syntax and parameter values of the Internet Information Server 5.0 Server Side-Include directives It also describes the syntax and use of the IISRESTART utility, which can be used to manage the Web services remotely from another computer, from the command line, or from within an SSI directive SSI Directives, Attributes and Tokens Directive Description # include Inserts the contents of a specified file into the response stream being sent to the client, replacing the directive For example: See below for a list of the attributes and tokens that can be used in this directive # config Specifies the format that will be used for dates, times and file sizes, and the text of the generic SSI error message that is returned to the client For example: See below for a list of the attributes and tokens that can be used in this directive Table Continued on Following Page Appendix G Directive Description #echo Inserts the value of an HTTP environment variable into the response stream being sent to the client, replacing the directive For example: See below for a list of the attributes and tokens that can be used in this directive #exec Executes a program or a shell command on the server For example: See below for a list of the attributes and tokens that can be used in this directive You must add the following entry to the Windows Registry to be able to use the CMD attribute: HKEY_LOCAL_MACHINE \SYSTEM \CurrentControlSet \Services \W3SVC \Parameters \SSIEnableCmdDirective Set the value to to and restart the WWW service to allow the CMD attribute to be used in the #exec directive Set it to to disable it and prevent unauthorized use, which could otherwise damage the server installation #flastmod Inserts the date and time that a specified file was last modified into the response stream being sent to the client, replacing the directive For example: See below for a list of the attributes and tokens that can be used in this directive #fsize Inserts the size of a specified file into the response stream being sent to the client, replacing the directive For example: See below for a list of the attributes and tokens that can be used in this directive Command Type Attributes for the #exec Directive Attribute Description CGI Executes the specified application in the context of the Web server (i.e with access to the request and response via the ISAPI) and passes the value of any query string to the application The application runs in a separate memory space from the Web server CMD Starts an instance of the specified operating system command interpreter and executes the specified command 1224 Useful Information Path Type Attributes for #include, #flastmod and #fsize Attribute Description FILE The value of the attribute is a complete or relative physical path plus the name of the file, as would be used at the DOS command prompt, i.e "\files\web\myfile.txt" VIRTUAL The value of the attribute is a complete or relative virtual path plus the name of the file, in relation to the root folder of the current Web site "/files/web/myfile.txt" SIZEFMT Tokens for the #config Directive Token Description BYTES The size of the file will be returned in bytes ABBREV The size of the file will be calculated and returned as the nearest number of kilobytes (KB) TIMEFMT Tokens for the #config Directive Token Description %a The day of the week as ' Mon ', ' Tue ', etc %A The day of the week as 'Monday' , Tuesday' , etc %b The name of the month as 'Jan' , Feb' , etc %B The name of the month as 'January' , February' , etc %c The current date and time formatted appropriately for the server's locale (i.e 11/06/99 12:51:32 ) %d The day of the month as a number ( 01 to 31 ) %H The current hour in 24-hour format ( 00 to 23 ) %I The current hour in 12-hour format ( 01 to 12 ) %j The day of the year as a number ( 001 to 366 ) %m The month as a number ( 01 to 12 ) %M The current minute as a number ( 00 to 59 ) %p The appropriate 'morning' or 'afternoon' string for the server's locale (i.e AM or PM ) %S The current second as a decimal number ( 00 to 59 ) %U The week of the year as a number with Sunday as the first day of the week ( 00 to 51 ) %w The day of the week as a number with Sunday as the first day of the week ( to ) %W The week of the year as a number with Monday as the first day of the week ( 00 to 51 ) %x The current date formatted appropriately for the server's locale (i.e 11/06/99 ) %X The current time formatted appropriately for the server's locale (i.e 12:51:32 ) %y The year number without the century (i.e 01 ) %Y The year number with the century (i.e 2001 ) %z, %Z The name or an abbreviation for the server's time zone if known %% A 'percent' character 1225 Appendix G VAR Tokens for the #echo Directive Token Description AUTH_TYPE The type of authentication that the client and server used if this page denied anonymous access, for example 'Basic' or 'NTLM' (i.e Challenge/Response) AUTH_PASSWORD The password provided by the user to the server if this page denied anonymous access and the client authenticated using the Basic method AUTH_USER The username provided by the user to the server if this page denied anonymous access, under both NTLM and Basic (or other) methods CONTENT_LENGTH The number of bytes sent in the body of the request, i.e the number of bytes sent as a POST to the server CONTENT_TYPE The MIME type of the data sent as a POST in the body of the request DOCUMENT_NAME The full physical path and filename of the document requested by the client DOCUMENT_URI The full virtual path and filename of the document requested by the client, in relation to the root folder of this Web site DATE_GMT The date and time set in the server's operating system, without any adjustment from Greenwich Mean Time DATE_LOCAL The date and time set in the server's operating system after adjustment from Greenwich Mean Time GATEWAY _ INTERFACE The type of interface used to handle the request, for example ' CGI/1.1 ' HTTP_ACCEPT A comma-delimited list of MIME types that the client application has notified the server that it can accept LAST_MODIFIED The date and time when the file or resource requested by the client was last changed PATH_INFO The full virtual path and filename of the document requested by the client, in relation to the root folder of this Web site PATH_TRANSLATED The full physical path and filename of the document requested by the client QUERY_STRING The value of any query string that was appended to the URL of the document or resource the client requested, after translation from the URL-encoded format QUERY_STRING_ UNESCAPED The value of any query string that was appended to the URL of the document or resource the client requested, before translation from the URL-encoded format REMOTE_ADDR The IP address of the client machine that requested the page REMOTE_HOST The host name or IP address of the network from which the client requested the page REMOTE_USER The name (if available) of the client machine that requested the page REQUEST_METHOD The method used when requesting the page, either 'GET' or 'POST' SCRIPT_NAME The full virtual path and filename of the document requested by the client, in relation to the root folder of the Web site SERVER_NAME The network name or URL host name of the server that received the request SERVER_PORT The number of the port on which the request was received, i.e '80' for normal page requests and '443' for SSL secure requests SERVER_PORT_SECURE The port number if this request was over a secure protocol SERVER_PROTOCOL The HTTP protocol that the request was passed under, i.e ' HTTP/1.1 ' SERVER_SOFTWARE The name/version string of the Web server, i.e ' Microsoft-IIS/5.0 ' URL The complete URL that the user specified when requesting the document or resource ALL_HTTP All the name/value pairs for HTTP environment variables that are not included in the list above, for example HTTP_COOKIE and HTTP_ACCEPT_LANGUAGE 1226 Useful Information The IISRESET Utility and Switches The iisreset.exe utility can be used to manage the Web services running on any server providing that you have the relevant permissions It should be used in preference to the NET STOP and NET START commands, as it stops and starts the various integrated services in the correct sequence The syntax is iisreset [computer_name] /switch [ /switch ] Where the available switch values are: Switch Meaning RESTART Stop and then restart all Internet services running on the specified computer START Start all Internet services running on the specified computer STOP Stop all Internet services running on the specified computer REBOOT Reboot the specified computer REBOOTONERROR Reboot the specified computer if an error occurs when starting, stopping, or restarting Internet services NOFORCE Do not force Internet services to terminate if attempting to stop them gracefully fails TIMEOUT:val Set the timeout value in seconds for all the Internet services to stop Default is 20 for RESTART, 60 for STOP, and zero for REBOOT If the REBOOTONERROR switch is also specified the computer will reboot if the timeout period is exceeded STATUS Displays the status of all Internet services ENABLE Enables restarting of Internet Services on the local system DISABLE Disables restarting of Internet Services on the local system LY F M A TE This utility can be used in an CMD-type #echo SSI directive, providing that the page has anonymous access removed and the user supplies details of a valid account that has Administrator privileges on the target server However, in this situation the REBOOT, START and RESTART options will not function correctly The NET STOP and NET START Commands The net.exe utility can be used to manage the services running on a server, either locally or from another machine, providing that you have the relevant permissions Although not recommended for use with Internet services such as the WWW or FTP service, it is useful for stopping and starting other services (in fact, the NET command can be used to issue a whole range of other network-related commands as well) The syntax is net [start | stop] service_name So, for example, we can use it to stop and start the Microsoft Indexing Service with the commands: net stop cisvc and net start cisvc It can be used in a CMD-type #echo SSI directive providing that the page has anonymous access removed and the user supplies details of a valid account that has Administrator privileges on the target server A full list of all the options and switches for the NET command can be found in the Windows 2000 Help files Select Help from the Start menu, and in the Index page of the Help window look for 'net commands' 1227 Appendix G Other Useful Information Wrox Press provides two sites that contain useful information for ASP and Web developers in general: ❑ The Wrox Web Developer Site (http://webdev.wrox.co.uk/) The main site for sample code for all the Web-developer books we publish Run the samples on-line or download code to run on your own server Also contains chapters and extracts from our books, industry news, and a series of useful reference tools and other resources ❑ ASPToday (http://www.asptoday.com/) Read focused and useful articles on ASP and other Web programming techniques from a range of experts and industry gurus A new article is available every day of the week, and you can search the archives for previous ones Finding ASP-friendly ISPs ASP runs on Microsoft Windows servers, while the majority of ISPs still use Unix-based systems or an equivalent While there are ASP clones that run on Unix or Linux, many people want to use the full spectrum of ASP functions (such as COM components and Windows services) on their sites This tends to rule out many traditional ISPs Two or three years ago, it was very difficult to find an ISP that used Windows NT servers, and would allow you to install your own components or make use of Windows services in your Web applications Thankfully, the situation is changing fast, and there are now hundreds of ISPs that support ASP in full on Windows NT servers (predominantly Windows NT at the time of writing, but no doubt this will change fairly quickly as Windows 2000 proves itself) – just check that they allow you to install your own components before you sign up A search on InfoSeek (http://www.infoseek.com/) for ASP-enabled Windows NT based ISPs (using the criteria ' +asp +Web +hosting ' ) returned 390 matches Many of these offer ASP on Windows NT Server, plus support for applications such as SQL Server and others Some of the sites found (at the time of writing) were: Active Server ( http://www.active-server.com/ ) DataReturn ( http://www.datareturn.com/ ) IMC Online ( http://www.imconline.net/ ) Intermedia ( http://www.intermedia.net/ ) SiteCrafters Internet Services ( http://www.sitecrafters.com/ ) Softcom (http://www.softcomca.com) Technocom plc ( http://www.technocom.net/ ) Virtualscape ( http://www.virtualscape.com/ ) There are also sites that allow you to search for ISPs based of a whole range of criteria, such as Action Jackson (http://www.actionjackson.com/hosts) and Top Hosts (http://www.tophosts.com) Other ASP Web Sites There are also many other sites that provide ASP, or general Web-oriented information, for developers This is just a selection of those we know of and recommend: 15 Seconds Free Resources Center (http://www.15seconds.com/ ) Free resource for developers working with Microsoft Internet Solutions 15 Seconds claims to be the biggest IIS and ASP development resource in the world, with over 2300 pages ActionJackson Web Developer Central (http://www.actionjackson.com) A comprehensive resource of news, articles, books and links, including discussion forums, components, IIS hosts, jobs and much more 1228 Useful Information Active Server Pages Resources Site (http://www.activeserverpages.com/) This site specializes in Active Server Pages programming issues Maintained by Charles Carroll, it contains online programming tutorials, references, and links to a wide range of resources and articles ASP 101 Resources Site (http://www.asp101.com/) The purpose of this site is to provide both expert and novice developers with useful and timely information on the emerging technology of Active Server Pages ASP Forums (http://www.aspforums.com/) This site provides a range of forums and discussion groups for ASP related topics, plus lists of related companies and their software designed for use with ASP ASP Hole IIS and ASP Guide (http://www.asphole.com/) Intended to help the Active Server Pages professional locate ASP-related and IIS-related resources quickly and efficiently A huge range of various resources is available ASP Toolbox (http://www.tcp-ip.com/) Here you'll find a range of tutorials and other ASP-related information to help in developing your dynamic Web sites The ASP Resource Index (http://www.aspin.com/) Find all the Active Server Pages (ASP) Resources you need in one place Contains a comprehensive list of ASP components, applications, code snippets, references, and books ASPWatch (http://www.aspwatch.com/) Provides real world Active Server Pages solutions and resources This includes articles, discussions and book lists Hangeng (http://www.haneng.com/) Provides content that is free to be used commercially and non-commercially Dedicated to ASP technology and created and maintained by Alexander Haneng on a hobby basis JavaScript Source (http://javascript.internet.com/) An excellent JavaScript resource with tons of cut & paste JavaScript examples for your Web pages All for free! Microsoft's NT Server and BackOffice Site (http://www.microsoft.com/backoffice/) This site is the main page for the Microsoft BackOffice products, including NT Server, SQL Server, Exchange, and other components PowerASP Active Server Pages (http://powerasp.com/) This site offers code snippets, hints & tips, a discussion board, a chat room and newsletters—all related to ASP and general Web development topics Ultimate ASP (http://www.ultimateasp.com/) An ever-expanding wealth of information for building dynamic web pages, including help for beginners Website Abstraction (http://www.wsabstract.com/) This site is a webmaster's learning center featuring tutorials on all aspects of JavaScript and Web site construction It has been featured in many prestigious sources such as the LA Times and Vancouver Province newspapers World Wide Web Consortium (http://www.w3.org/) The home of the Web W3C is the main body that sets and agrees the standards for HTML and Web-related technologies Wynkoop BackOffice Pages (http://www.swynk.com/) Maintained by Steve Wynkoop, this site covers all Microsoft BackOffice technologies Ideal for those who want to combine ASP and corporate databases 1229 Appendix G 1230 P2P.WROX.COM Join the Pro ASP mailing lists for author and peer support Our unique system provides programmer to programmer™ support on mailing lists, forums and newsgroups all in addition to our one-to-one email system Be confident that your query is not just being examined by a support professional, but by the many Wrox authors and other industry experts present on our mailing lists We've extended our commitment to support beyond just while you read the book, to once you start developing applications as well We'll be there on this crucial second step of your learning You have the choice of how to receive this information, you can either enroll onto one of several mailing lists, or you can just browse the online forums and newsgroups for an answer Go to p2p.wrox.com You'll find three different lists, each tailored to a specific support issue: ❑ Errata You find something wrong with the book, or you just think something has been badly or misleadingly explained then leave your message here You'll still receive our customary quick reply, but you'll also have the advantage that every author will be able to see your problem at once and help deal with it ❑ Code Clinic You've read the book, and you're sat at home or work developing your own application, it doesn't work in the way you think it should Post your code here for advice and supports from our authors and from people in the same position as yourself ❑ How to? Something you think the book should have talked about, something you'd just like to know more about, a completely baffling problem with no solution, then this is your forum If you're developing an application at work then chances are there's someone out there who's already done the same as you, and has a solution to your problem here Appendix H How To Enroll For Support Just follow this four-step system: Go to p2p.wrox.com Click on the Professional ASP 3.0 cover graphic Click on the type of mailing list you wish to join Fill in your email address and password (of at least digits) and email it to us Why this system offers the best support You can choose to join the mailing lists or you can receive them as a weekly digest If you don't have the time or facility to receive the mailing list, then you can search our online archives You'll find the ability to search on specific subject areas or keywords As these lists are moderated, you can be confident of finding good, accurate information quickly Mails can be edited or moved by the moderator into the correct place, making this a most efficient resource Junk and spam mail are deleted, and your own email address is protected by the unique Lyris system from web-bots that can automatically hoover up newsgroup mailing list addresses Any queries about joining, leaving lists or any query about the list should be sent to: moderatorproasp3@wrox.com 1232 P2P.WROX.COM 1233 Appendix H 1234 ... following technologies Customized ActiveX controls, ActiveX DLL''s, Active Server Pages, Word and Excel OLE automation, JavaScript, VBScript, DHTML, IIS, and SQL Server 7.0 Daniel Denault can be contacted... Table of Contents Chapter 4: Server Processes and the ASP Server Object129 Server- Side Processing in Dynamic Pages The Internet Server Application Programming Interface Server- Side Include (SSI)... Instances in ASP Pages The CreateObject Method of the Server Object Executing Other Pages The Problems with Client-side Redirection Server- side Redirection in ASP 3.0 Executing SSI Pages from ASP