IIS Insider - May 2006
By Bernard Cheah (IIS-Resources.com)
IIS Insider is a monthly column designed to answer your questions on how to troubleshoot and make the most of Microsoft Internet Information Services (IIS).
The example companies, organizations, products, domain names, e-mail addresses, logos, people, places, and events depicted herein are fictitious. No association with any real companies, organizations, products, domain names, e-mail addresses, logos, persons, places, or events are intended or should be inferred.
Q. I need to know how many application pools I should have in my IIS 6.0 - is there some restriction?
A. Yes, there is a limitation for the maximum number of application pools hosted in IIS and many do not know that such a limitation exists. Technically, you can only have 60 concurrent application pools running with different process identities via a single shared desktop session. Pay attention to the highlighted wording: you will ONLY hit the limit if you are sharing a single desktop session, with 60 different application pools identities for each application pool. Unless you are running in this configuration, it is unlikely that you will hit the limit. For example, I can have an IIS 6 setup than includes 80 application pools with 23 different application pools identities - or 200 application pools with the three IIS default, pre-defined identities. (Network Service, Local Service, and Local System).Neither of the above setups hit the limit.
Anyway, back to the topic. If you really hit the limit, how do you overcome this? Well besides using fewer application pool identities, you can actually eliminate the limit by not sharing desktop sessions. To do this, set the UseSharedWPDesktop registry key to 1. Refer to this KB, and you�ll see how to grant yourself multiple desktop sessions, which indirectly breaks the limitation rules of 1 desktop session with 60 different application pool identities.
Do not edit the registry unless you have no alternative. The registry editor bypasses standard safeguards, allowing settings that can damage your system, or even require you to reinstall Windows. If you must edit the registry, back it up first and see the Registry Reference.
Next, you might ask why would Microsoft use the shared desktop object by default? And what about security concerns, since application pools are sharing the same desktop? Security risk is low as pointed out by our hottest IIS blogger " David Wang " who indicates that there'�s no sensitive data in sharing the same desktop. So why the shared desktop? Well, it was designed this way mainly due to resource constraints, as each desktop session requires memory space and other resources to host - and desktop heap is associated to each object. Eventually, if this had not been controlled, you would have hit another limitation due to the desktop heap size. For more information about the desktop heap issue for IIS4/5/6 (32bits), read this KB.
Tablet PCs and ASP
Q. I�m using Windows XP-based Tablet PC, Can I run ASP pages on it?
A. IIS on a Tablet PC? Interesting - I did some research and - except for Windows XP Home Edition - all versions of Windows XP have IIS 5.1 built-in. The majority of the SKUs are from XP Pro subsets, hence IIS is included. Take a look at the table below to see where IIS is included:
|Windows XP||IIS Built-in|
Yes (IIS 5.1)
Yes (IIS 5.1)
Yes (IIS 5.1)
Yes (IIS 6.0)
Take note that for XP Pro 64bit, you will get IIS 6.0 instead. This KB discusses running different version of .Net Framework in IIS 6.0 - which included XP Pro 64bit edition. It is important to be aware that Microsoft Windows XP is designed as workstation operating system and is limited in function from the IIS perspective. Those limitations include support for only one active website at any one time, a limit of up to 10 concurrent inbound connections and the inability to offer IP address and domain restrictions.
For enterprise development and production usage, it is recommended that you purchase Windows Server 2003 for the full IIS feature set.
Tips on Using ASP and Windows 2000
Q. I�m using Windows 2000 Server, the html pages work fine. However, ASP is not working. I�m seeing an �Invalid Default Script Language� error message in my browser. I have been searching high and low - and tried many suggested fixes - but I still keep getting the same results. I have even reinstalled IIS! Please help me!!!!!!!!
A. Interesting! This is a pretty common ASP error that can be caused by a variety of conditions. Before we go into various ways to fix this error, let�s take a look at the error itself. So what�s the complete error message? Well, I got the following when simulating one of the possible causes of this:
Active Server Pages error 'ASP 0201
Invalid Default Script Language
The default script language specified for this application is invalid.
Or similar error message as highlighted in this KB - ASP0201: Invalid Default Script Language. As indicated in the article, the error is caused by non-supported scripting languages that IIS is unable to recognize. Now how to fix this? Try the following:
Make sure the proper scripting language is defined in IIS. As per the above article, make sure the Default ASP Language is set to VBScript (by default), or JScript if you preferred Java Scripting.
Take note that your code will override the first setup if you have <% Language="language" %> defined at the beginning of your script. So, double-check to ensure you don�t have a spelling or typo error. It should be <% Language="VBScript" %>
From time to time, this may be due to incomplete DLL registration for the scripting engine. To get the scripting engine up to date, please get the latest scripting engine here. At the time of this writing, the latest version is 5.6.
Now, I have seen an issue when installing the Scripting engine, (e.g. unable to register certain DLLs). If that is the case, what you can try next is to register the following DLLs:
Moving on, if you reach this step, it is likely due to a permission issue. (such as: iusr_computername account for anonymous access does not have READ permission over the related DLLs). You�ll then try to grant NTFS read permission to the DLLs in step 4 for your request account.
Next, following step 5 " if you are still facing the same problem, you could take another step to ensure that all relevant permissions are in place. For tips on this, refer the following KBs:
IIS 4 - Required NTFS permissions and user rights for IIS 4.0
IIS 5 - How to set required NTFS permissions and user rights for an IIS 5.0 Web server
IIS 6 - Default permissions and user rights for IIS 6.0
Typically, if you have followed all the previous steps, you should no longer see the same error message. Just in case you missed some of the configurations in earlier steps, you can then temporarily make the iusr_computername - or your defined request user account " part of the local administrators group. Take note, this is just for troubleshooting purposes! You should NOT grant the default anonymous account with local administrative rights, and make sure after the troubleshooting that you remove the account from the administrators group.
The idea behind this is to check if adding the user to this administrators group fixes the error, if yes, it is confirmed that there are yet permission issues that not being addressed or overlooked in previous steps. After removing the account from the administrators group, you can then get Filemon and Regmon from sysinternals.com to trace the permission issue.
Ok, signing off for now, I'�ll be back soon�..Don�t forget to send your feedback and IIS questions to the link provided at the bottom of this page. Until next time, Ciao!
For More Information
Submit your questions to IIS Insider. A response is not guaranteed; however, selected questions along with the answers will be posted in a future IIS Insider column.
Visit IIS Insider column archives for a list of previous months' questions and answers.
We at Microsoft Corporation hope that the information in this work is valuable to you. Your use of the information contained in this work, however, is at your sole risk. All information in this work is provided "as is," without any warranty, whether express or implied, of its accuracy, completeness, fitness for a particular purpose, title or non-infringement, and none of the third-party products or information mentioned in the work are authored, recommended, supported, or guaranteed by Microsoft Corporation. Microsoft Corporation shall not be liable for any damages you may sustain by using this information, whether direct, indirect, special, incidental, or consequential, even if it has been advised of the possibility of such damages.
IIS Developer Support Voice Column