Web Garden and Web Farm With Browser Back

download Web Garden and Web Farm With Browser Back

of 39

Transcript of Web Garden and Web Farm With Browser Back

  • 8/9/2019 Web Garden and Web Farm With Browser Back

    1/39

    Table of Contents

    Introduction

    What is Web Server ?

    Introduction to IIS

    o Overview of IISo IIS Version in Different OS :

    o How to Install IIS 6.0

    IIS 6.0 Process Model and Request Processing

    Deploying your web sites on IIS

    o Creating virtual Directory

    o Configure Virtual Directory

    Virtual Directory

    Documents

    ASP.NET

    Directory Security

    Custom Errors

    Application Pool

    o How To Create Application Pool ?

    Create New Application Pool

    Create From Existing Configuration File

    o Configure Application Pool Properties

    Recycling

    What happened during Application Pool Recycling ?

    Performance :

    Health :

    Identity

    Debugging Your Application That Hosted on IIS

    Summary

    My IIS Articles @ Code Project

    Reference and Further Study

    Points of Interest

    History

    Introduction

    In the past I have written a few articles for beginners and had got a very good

    response from all readers. This time I have planned to write an article on IIS 6.0 and

    Integration of IIS with ASP.NET. I have worked on IIS 5.1, IIS 6.0 and IIS 7.0.

    Though the purpose of all IIS servers are the same they are very different on their

    architecture and use. Don't worry, I am not going to explain the differences of

    those three versions of IIS. The purpose of this article is completely different. While

    answering in the ASP.NET forum, I have found many questions on Deploying Web

    sites, the Security settings of IIS, different authentication types, Application Pool,

    http://www.codeproject.com/KB/aspnet/ExploringIIS.aspx#heading0000%23heading0000http://www.codeproject.com/KB/aspnet/ExploringIIS.aspx#heading0001%23heading0001http://www.codeproject.com/KB/aspnet/ExploringIIS.aspx#heading0002%23heading0002http://www.codeproject.com/KB/aspnet/ExploringIIS.aspx#heading0003%23heading0003http://www.codeproject.com/KB/aspnet/ExploringIIS.aspx#heading0004%23heading0004http://www.codeproject.com/KB/aspnet/ExploringIIS.aspx#heading0005%23heading0005http://www.codeproject.com/KB/aspnet/ExploringIIS.aspx#heading0006%23heading0006http://www.codeproject.com/KB/aspnet/ExploringIIS.aspx#heading0007%23heading0007http://www.codeproject.com/KB/aspnet/ExploringIIS.aspx#heading0008%23heading0008http://www.codeproject.com/KB/aspnet/ExploringIIS.aspx#heading0009%23heading0009http://www.codeproject.com/KB/aspnet/ExploringIIS.aspx#heading0010%23heading0010http://www.codeproject.com/KB/aspnet/ExploringIIS.aspx#heading0011%23heading0011http://www.codeproject.com/KB/aspnet/ExploringIIS.aspx#heading0012%23heading0012http://www.codeproject.com/KB/aspnet/ExploringIIS.aspx#heading0013%23heading0013http://www.codeproject.com/KB/aspnet/ExploringIIS.aspx#heading0014%23heading0014http://www.codeproject.com/KB/aspnet/ExploringIIS.aspx#heading0015%23heading0015http://www.codeproject.com/KB/aspnet/ExploringIIS.aspx#heading0016%23heading0016http://www.codeproject.com/KB/aspnet/ExploringIIS.aspx#heading0017%23heading0017http://www.codeproject.com/KB/aspnet/ExploringIIS.aspx#heading0018%23heading0018http://www.codeproject.com/KB/aspnet/ExploringIIS.aspx#heading0019%23heading0019http://www.codeproject.com/KB/aspnet/ExploringIIS.aspx#heading0020%23heading0020http://www.codeproject.com/KB/aspnet/ExploringIIS.aspx#heading0021%23heading0021http://www.codeproject.com/KB/aspnet/ExploringIIS.aspx#heading0022%23heading0022http://www.codeproject.com/KB/aspnet/ExploringIIS.aspx#heading0023%23heading0023http://www.codeproject.com/KB/aspnet/ExploringIIS.aspx#heading0024%23heading0024http://www.codeproject.com/KB/aspnet/ExploringIIS.aspx#heading0026%23heading0026http://www.codeproject.com/KB/aspnet/ExploringIIS.aspx#heading0027%23heading0027http://www.codeproject.com/KB/aspnet/ExploringIIS.aspx#heading0028%23heading0028http://www.codeproject.com/KB/aspnet/ExploringIIS.aspx#heading0029%23heading0029http://www.codeproject.com/KB/aspnet/ExploringIIS.aspx#heading0030%23heading0030http://www.codeproject.com/KB/aspnet/ExploringIIS.aspx#heading0031%23heading0031http://www.codeproject.com/KB/aspnet/ExploringIIS.aspx#heading0000%23heading0000http://www.codeproject.com/KB/aspnet/ExploringIIS.aspx#heading0001%23heading0001http://www.codeproject.com/KB/aspnet/ExploringIIS.aspx#heading0002%23heading0002http://www.codeproject.com/KB/aspnet/ExploringIIS.aspx#heading0003%23heading0003http://www.codeproject.com/KB/aspnet/ExploringIIS.aspx#heading0004%23heading0004http://www.codeproject.com/KB/aspnet/ExploringIIS.aspx#heading0005%23heading0005http://www.codeproject.com/KB/aspnet/ExploringIIS.aspx#heading0006%23heading0006http://www.codeproject.com/KB/aspnet/ExploringIIS.aspx#heading0007%23heading0007http://www.codeproject.com/KB/aspnet/ExploringIIS.aspx#heading0008%23heading0008http://www.codeproject.com/KB/aspnet/ExploringIIS.aspx#heading0009%23heading0009http://www.codeproject.com/KB/aspnet/ExploringIIS.aspx#heading0010%23heading0010http://www.codeproject.com/KB/aspnet/ExploringIIS.aspx#heading0011%23heading0011http://www.codeproject.com/KB/aspnet/ExploringIIS.aspx#heading0012%23heading0012http://www.codeproject.com/KB/aspnet/ExploringIIS.aspx#heading0013%23heading0013http://www.codeproject.com/KB/aspnet/ExploringIIS.aspx#heading0014%23heading0014http://www.codeproject.com/KB/aspnet/ExploringIIS.aspx#heading0015%23heading0015http://www.codeproject.com/KB/aspnet/ExploringIIS.aspx#heading0016%23heading0016http://www.codeproject.com/KB/aspnet/ExploringIIS.aspx#heading0017%23heading0017http://www.codeproject.com/KB/aspnet/ExploringIIS.aspx#heading0018%23heading0018http://www.codeproject.com/KB/aspnet/ExploringIIS.aspx#heading0019%23heading0019http://www.codeproject.com/KB/aspnet/ExploringIIS.aspx#heading0020%23heading0020http://www.codeproject.com/KB/aspnet/ExploringIIS.aspx#heading0021%23heading0021http://www.codeproject.com/KB/aspnet/ExploringIIS.aspx#heading0022%23heading0022http://www.codeproject.com/KB/aspnet/ExploringIIS.aspx#heading0023%23heading0023http://www.codeproject.com/KB/aspnet/ExploringIIS.aspx#heading0024%23heading0024http://www.codeproject.com/KB/aspnet/ExploringIIS.aspx#heading0026%23heading0026http://www.codeproject.com/KB/aspnet/ExploringIIS.aspx#heading0027%23heading0027http://www.codeproject.com/KB/aspnet/ExploringIIS.aspx#heading0028%23heading0028http://www.codeproject.com/KB/aspnet/ExploringIIS.aspx#heading0029%23heading0029http://www.codeproject.com/KB/aspnet/ExploringIIS.aspx#heading0030%23heading0030http://www.codeproject.com/KB/aspnet/ExploringIIS.aspx#heading0031%23heading0031
  • 8/9/2019 Web Garden and Web Farm With Browser Back

    2/39

    recycling of application etc. This is an "All in One" article for IIS. This will really

    help beginners to know what IIS is, how to install IIS, how to deploy sites on IIS,

    creation of Application pool, web garden, etc. This article is all about IIS 6.0. If

    anybody is interested in IIS 7.0 please read the article Deploying ASP. Net Websites

    on IIS 7.0 . Please give your valuable suggestions and feedback to improve this

    article.

    What is a Web Server ?

    Visual Studio has its own ASP.NET Engine, which is responsible for running your web

    application so you don't have any problems running an ASP.NET application from VS

    IDE. Now when you want to host your site for others to access, the concept of "Web

    Server" comes into the picture. A web server is responsible for all the requests that

    are coming from clients and provides them a response. So when multiple users come

    in, multiple requests will also come in and the web server will have a response for

    each of them. IIS (Internet Information Server) is one of the most powerful web

    servers from Microsoft that is used to host your ASP.NET web application. IIS has its

    own ASP.NET Process to handle the ASP.NET request. If you look at the picture,

    Fig: IIS Server Overview

    The First Client will make a request to the web server (IIS), the web server checks

    the request and will pass the request to the ASP.NET Process (Don't get confused

    here, I have explained the details), the ASP.NET process Engine will process the

    request and pass the response to the client via the Web server. So one of the major

    roles of IIS is handling each and every request. Don't worry, I explained each and

    every thing in more detail later. So far, I hope it is clear why we are using a web

    server.

    http://www.codeproject.com/KB/aspnet/IIS7ASPNet.aspxhttp://www.codeproject.com/KB/aspnet/IIS7ASPNet.aspxhttp://www.codeproject.com/KB/aspnet/IIS7ASPNet.aspxhttp://www.codeproject.com/KB/aspnet/IIS7ASPNet.aspx
  • 8/9/2019 Web Garden and Web Farm With Browser Back

    3/39

    Introduction to IIS

    IIS 6.0 provides a redesigned World Wide Web Publishing Service architecture that

    can help you achieve better performance, reliability, scalability, and security for your

    Web sites. In this section I have described the overview of IIS and installation guide

    of IIS 6.0 .

    Overview of IIS

    Internet Information Server is one of the most powerful web servers provided by

    Microsoft that is able to host and run your web applications. IIS can support

    following Protocol FTP, FTPS, SMTP, NNTP , HTTP/HTTPS. We can host our web

    sites on IIS, we can use it as a FTP site also. For more information Click Here

    IIS Version in Different OS :

    Below are the list of IIS Version that support following Operating systems.

    Operating System IIS Version

    Windows Server 2008 IIS 7.0

    Windows Vista - Home Premium/ Ultimate IIS 7.0

    Windows Server 2003 IIS 6.0

    Windows XP Professional IIS 5.1

    Windows 2000 Server IIS 5.0 IIS 5.0

    How to Install IIS 6.0

    Installation of IIS is very similar to installing any other system applications from

    control panel. We have to start navigation from Control Panel > Add/Remove

    Programs, Then select the Add/Remove windows Component. Follow the

    screen given below.

    http://en.wikipedia.org/wiki/Internet_Information_Serviceshttp://en.wikipedia.org/wiki/Internet_Information_Services
  • 8/9/2019 Web Garden and Web Farm With Browser Back

    4/39

    Fig: IIS Installation

    Then Select "Application Server" from checkbox list. This will open an new

    window, select IIS and click on OK.

  • 8/9/2019 Web Garden and Web Farm With Browser Back

    5/39

    Fig: IIS Installation selection

    This will initiate the IIS installation. OS will show a continuous progress

    bar during installation and will show up a final message after installation complete.

  • 8/9/2019 Web Garden and Web Farm With Browser Back

    6/39

    Fig: IIS Installation Progress

    Note :During the installation period it may ask for some OS file. You need to

    provide the path for that.

    After successful installation of IIS, Go to Start > Run > Inetmgr to launch IIS.

    The below screen will appear, which ensures that IIS has been successfully installed

    in your system.

  • 8/9/2019 Web Garden and Web Farm With Browser Back

    7/39

    Fig: IIS installed successfully

    IIS 6.0 Process Model and Request Processing

    Before starting with a virtual directory and Application pool and all other stuff, lets

    have a quick look into the IIS 6.0 Process module and the way ofIIS

    request processing. This topic itself a huge one. Here I am just giving you the

    overview of IIS 6.0 Process model and request processing.

    We can divide the whole architecture into two layers.

    Kernel Mode

    o HTTP.SYS

    User Mode

    o Web Admin Service

    o Virtual Directory

    o Application Pool

  • 8/9/2019 Web Garden and Web Farm With Browser Back

    8/39

    Fig: IIS 6.0 Process Module

    As per the above diagram IIS has two modes, Kernel and User. HTTP.SYS is the

    heart of kernel mode which accepts raw request from client and passed it to

    particular application pool. Below are a few steps of IIS Request processing.

    1. Client Request for a page from browser by hitting the site URL.

    2. Request comes to kernel level. HTTP.SYS catches the requests and creates

    a separate queue for each and every application pool.

    Note : Whenever we create any application pool IIS automatically registers the

    pool with HTTP.SYS to identify the particular during request processing.

    Then HTTP.SYS forwards the request to Application Pool

    3. Request comes to application pool means worker process(w3wp.exe) start actionby loading ISAPI Filter.

    4. Based on the requested resource, w3wp.exe loads "aspnet_isapi.dll" for aspx

    page and starts an HTTPRuntime, which is the entry point of an application.

    5.Then the HttpRuntime.ProcessRequestmethod signals the start of the

    processing.

  • 8/9/2019 Web Garden and Web Farm With Browser Back

    9/39

    6.The HttpContext object represents the context of the currently active request,

    as it contains references to objects you can access during the request lifetime, such

    as Request, Response,Application, Server, and Cache.

    7.The HttpRuntime creates a pool ofHttpApplication objects.

    8. The request passes through the HTTP Pipeline

    9. HTTP Modules are executed against the request until the request hits

    the ASP.NET page HTTP Handler

    10.Once the request leaves the HTTP Pipeline, the Page life cycle starts

    If you want to know the details of IIS Request processing, I will suggest that

    you please read the article ASP.NET Internals: Request Architecture

    Deploying your web sites on IIS

    In this section I have discussed how to host a site on IIS, how to create virtual

    directory, configure Virtual directory etc. Let's start with Virtual directory creation.

    Creating Virtual Directory

    There are various way to host a web application on IIS. Visual Studio has some

    inbuilt features to host and create virtual directory on IIS directly. Here is one of my

    article on hosting site on IIS from Visual studio. But in this section I have discussed

    the basic steps for creating virtual directory.

    First of all Right Click on Default web sites > New > Virtual Directory .

    http://www.codeproject.com/KB/aspnet/aspnetrequestarchitecture.aspxhttp://www.codeproject.com/KB/aspnet/VSDeploy.aspxhttp://www.codeproject.com/KB/aspnet/VSDeploy.aspxhttp://www.codeproject.com/KB/aspnet/aspnetrequestarchitecture.aspxhttp://www.codeproject.com/KB/aspnet/VSDeploy.aspx
  • 8/9/2019 Web Garden and Web Farm With Browser Back

    10/39

    Fig: Virtual Directory Creation

    By Selecting "Virtual Directory..." Virtual directory creation wizard will start.

    Click on "Next"

    Fig: Virtual Directory Creation

  • 8/9/2019 Web Garden and Web Farm With Browser Back

    11/39

    Give the "Alias" name and proceed for"Next" . The alias name is your virtual

    directory name.

    Fig: Virtual Directory Creation

    As its name implies,"virtual directory", does not contain any physical file. We

    need to define the physical file path that it will refer. We have to browse the

    physical path over here.

  • 8/9/2019 Web Garden and Web Farm With Browser Back

    12/39

    Fig: Virtual Directory Creation

    Now based on your requirements you can select the check boxes and click on

    "Next". Generally we select only "Read" option.

    Fig: Virtual Directory Creation : Permission settings

    Below is the list of permissions that we can refer.

    Read: It is most basic and is mandatory to access the webpage of your

    application.

    Run Scripts: It is required for the aspx pages not for the static HTML pages

    because aspx pages need more permissions sp that they could conceivably

    perform operations.

    Execute: This allows the user to run an ordinary executable file or CGI

    application. This can be a security risk so allow when it is really needed.

    Write: It allows to add, modify or remove files from the web server. This

    should never be allowed.

    Browse: This allows one to retrieve a full list of files in the virtual directoryeven if the contents of the file are restricted. It is generally disabled.

    You are done ! Virtual directory has been created successfully. You will get the

    final message. Click on "Finish" to close the window and move forward.

  • 8/9/2019 Web Garden and Web Farm With Browser Back

    13/39

    Fig: Virtual Directory Creation : Finish

    There are some other alternative option that you can use for creating Virtual

    Directory.

    1. Copy the physical directory to the wwwroot folder.

    2. Physical Folder Properties > Web Sharing.

    Configure Virtual Directory

    Below listed section are very important for configuration of any web application.

    Virtual Directory

    Documents

    Documents

    ASP.NET

    Directory Security

    Custom Errors

    I have explained each of them step by step. Apart from them Virtual Directory

    having settings like BITS Server Extension, HTTP Header etc. I didn't cover those in

    this article. Lets start with "Virtual Directory" Tab.

  • 8/9/2019 Web Garden and Web Farm With Browser Back

    14/39

    Virtual Directory

    This is the most important configuration section for virtual directory. To open this

    tab, we need to select the newly created virtual directory.

    Fig: Virtual Directory Configuration

    Right Click on it > Properties. Below screen will come up.

  • 8/9/2019 Web Garden and Web Farm With Browser Back

    15/39

    Fig: Virtual Directory Properties

    Here we can change the local path (physical path ). Before looking into other stuff

    first look into the "Application Settings" Section. It seems the Application

    name is disabled. So first of all we need to click the "Create" button, which will

    enable the rest of the thing. Check the below image.

    Fig: Virtual Directory Creation

    Here we can change the Execution setting and Application pool name. Choosing

    "None" for Execute Permission will restrict the access of web site. Now move to

    "Documents" Tab.

    Documents

    Documents tab is used to set the default page of your web application. We can add

    or remove page name in this section. To configure we have to move to "Documents"

    Tab.

    Fig: Virtual Directory Creation

  • 8/9/2019 Web Garden and Web Farm With Browser Back

    16/39

    This is useful when you want to access site directly with the virtual directory name.

    As for example, if your virtual directory name is "mywebsite" and your home page

    name is "home.aspx". Then you have to access the page as follows,

    Collapsehttp:///mywebsite/home.aspx

    but if you define the home.aspx at documents section, you need to write only at

    address bar to access the site.

    Collapsehttp:///mywebsite

    ASP.NET

    If IIS is registered with multiple .NET Framework version, the ASP.NET Version

    dropdown list shows all of them. But based on the application, we need to change

    the Framework version. E.g. : If our application developed in .NET 2.0, then the

    version should be 2.0.X.X .

    Fig:ASP.NET Version Selection

  • 8/9/2019 Web Garden and Web Farm With Browser Back

    17/39

    Tips:If the .NET framework is already installed in your system when you are

    installing IIS, then ASP.NET will not be registered with IIS. So if you host any

    application on IIS it will not work. To Register your IIS with the ASP.NET version you

    need to run the aspnet_regiis -i command from the command prompt. This will

    automatically register the .NET Framework with your IIS.

    For more Info : Please Read

    Directory Security

    Directory security enables all kinds of security access of your web application. For

    Directory we need to move to "Directory Security" Tab.

    Fig: Directory Security Settings

    Click on the "Edit" button to modify the directory security settings. After clicking on

    Edit button, the below screen will come up.

    http://msdn.microsoft.com/en-us/library/k6h9cz8h(VS.80).aspxhttp://msdn.microsoft.com/en-us/library/k6h9cz8h(VS.80).aspx
  • 8/9/2019 Web Garden and Web Farm With Browser Back

    18/39

    Fig: Directory Security Settings

    Below are the commonly used IIS Security settings

    Anonymous

    Integrated Windows Authentication

    Basic Authentication

    Digest Authentication

    Anonymous

    Anonymous authentication means the site is accessible to all. This is the default

    authentication mode for any site that is hosted on IIS, and it runs under

    the "IUSR_[ServerName]" account. We can change it by clicking on "Browse"

    button.

    Integrated Windows Authentication

    This authentication mode is generally used for Intranet sites. Users are authenticated

    from the Active Directory. Integrated Windows authentication is also known as NTLM

  • 8/9/2019 Web Garden and Web Farm With Browser Back

    19/39

    authentication. If browser settings automatically login for trusted sites for

    windows authentication then the site will logged in automatically with the windows

    user credentials.

    Basic Authentication

    This is supported by all browsers and is a part ofHTTP standard. This shows a Login

    dialog control which accepts user name and password. The user id and password is

    passed to IIS to authenticate the user from Windows credentials.

    Digest Authentication

    The disadvantages of Basic authentication mode is that it sends a password as plain

    text. Digest authentication does almost the same thing as basic authentication but it

    sends the "Hash" of the password rather than sending plain text.

    Integrated Windows, Basic Authentication and Digest Authentication use active

    directory to authenticate the user.

    Note : There are many things related with IIS and ASP.NET Security configuration.

    I am not covering all these in detail. I am just giving a brief overview so that you are

    comfortable with all this stuff.

    For Configuring SSL, please read the reference link that I have provided in reference

    section.

    Custom Errors

    Custom error tab allows us to specify the error page that will be displayed for any

    specific type of HTTP Error.

  • 8/9/2019 Web Garden and Web Farm With Browser Back

    20/39

    Fig: Directory Security Settings

    We can also customize the setting at our application level by configuring the

    web.config settings or we change the htm file path by just clicking on "Edit" button.

    This is all about the basic overview of creation of virtual directories and setting up.Hope you are now comfortable with all this stuff.

    Application Pool

    Application pool is the heart of an web site. An Application pool can contain multiple

    web sites. Application pools are used to separate sets of IIS worker processes that

    share the same configuration.Application pools enable us to isolate our

    web application for better security, reliability, and

    availability. The worker process serves as the process boundary that separates

    each application pool so that when one worker process or application is having an

    issue or recycles, other applications or worker processes are not affected.

  • 8/9/2019 Web Garden and Web Farm With Browser Back

    21/39

    Fig: Application Pool - IIS

    Generally we do it on our production environment. The main advantages of using

    application pool is the isolation of worker processes to differentiate sites and we can

    customize the configuration for each application to achieve the certain level of

    performance. The maximum number of application pool that is supported by IIS is2000.

    In this section I have discussed about the creation of application pool, Application

    pool settings, Assigning application pool to a web sites.

    How To Create Application Pool ?

    Application pool creation in IIS 6.0 is very simple task. There are two different way

    by which we can create the application pool. There is an Predefine application pool

    available in IIS 6.0, called "DefaultApplicationPool". Below are the two different way

    to create application pool

    Create New Application Pool

    Create From Existing Configuration File

    Create New Application Pool

  • 8/9/2019 Web Garden and Web Farm With Browser Back

    22/39

    First of all we need to open IIS Configuration Manager. Then Right Click on

    Application Pool and go to New > Application Pool.

    Fig: Create New Application Pool

    The below screen will appear. Where we need to mention the Application Pool name.

    Fig: New Application Pool Name

    When we create any new application pool, we can use the default application setting

    for it. The selection of "Default Settings" means by default the application poolsetting will be the same as the IIS default settings. If we want to use the

    configuration of existing Application pool, we need to select the section option "Use

    existing application pool as template". Selecting this option will enable

    the Application Pool name dropdown.

  • 8/9/2019 Web Garden and Web Farm With Browser Back

    23/39

    Fig: Application Pool Template Selection

    If we select any existing application pool as template, the newly created application

    pool should have the same configuration of the template application pool. Thisreduce the time of Application pool configuration.

    That is all about the creating a new application pool. Now lets have a look into

    creation of application pool from existing XML Configuration file.

    Create From Existing Configuration File

    We can save the configuration of an Application pool into a XML File and we can

    create a new application pool from that. This is very useful during

    configuration of Application pool inWeb Farm where you have multiple

    web servers and you need to configure the application pool for each and everyserver. As you are running your web application on Load balancer you need to

    unique configuration for all you application pool.

    So first of all you need to save the Application pool configuration pool in a server.

    Check the below image for details,

  • 8/9/2019 Web Garden and Web Farm With Browser Back

    24/39

    Fig: Application Pool Template Selection

    During this operation we can set the password for that configuration file which will be

    asked during the import of application pool on another server. When we click on the

    "Save Configuration to a file", the below screen will appear.

    Fig: Save Configuration as XML File

    Where we need to provide the Filename and location. If we want we can set

    password to encrypt the XML file. Below is the some part of that XML.

    CollapseLocation ="inherited:/LM/W3SVC/AppPools/StateServerAppPool"AdminACL="49634462f0000000a4000000400b1237aecdc1b1c110e38d00"AllowKeepAlive="TRUE"

  • 8/9/2019 Web Garden and Web Farm With Browser Back

    25/39

    AnonymousUserName="IUSR_LocalSystem"AnonymousUserPass="496344627000000024d680000000076c20200000000"AppAllowClientDebug="FALSE"AppAllowDebugging="FALSE"AppPoolId="DefaultAppPool"AppPoolIdentityType="2"AppPoolQueueLength="1000"

    AspAllowOutOfProcComponents="TRUE"AspAllowSessionState="TRUE"AspAppServiceFlags="0"AspBufferingLimit="4194304"AspBufferingOn="TRUE"AspCalcLineNumber="TRUE"AspCodepage="0"pre>

    Now we can create a new application pool for this configuration file. While creating a

    new application pool we have to select the "Application Pool ( From File )"

    option as shown in the below figure.

    Fig: Application Pool Creation From Configuration File

    When we select this option a screen will come where we need to enter the the file

    name and the password of that file.

  • 8/9/2019 Web Garden and Web Farm With Browser Back

    26/39

    Fig: Application Pool Creation From Configuration File

    Select the file and click on the "Read File Button". This will show you the

    imported application pool name. Click "Ok" to import the full configuration.

    Fig: Application Pool Creation From Configuration File

    Here we need to mention the new application pool name or we can have another

    option where we can replace any existing application pool. For moving ahead weneed to provide the password.

  • 8/9/2019 Web Garden and Web Farm With Browser Back

    27/39

    Fig: Password for Import Application Pool Configuration.

    This is the last step for creating a new application pool from existing configuration

    file.

    Configure Application Pool Properties

    This is one of the most important task for web server configuration and this is mainlyimportant when we are hosting on production server. As I have already discussed

    the Application pool is the heart for any web application hosted on IIS, we need to

    know the each and every configuration of Application Pool. For start configuration we

    need to go to the properties of application pool.

    Fig: Application pool Properties

    We need to configure the following things in Application pool.

    Recycling

    Performance

    Health

    Identity

  • 8/9/2019 Web Garden and Web Farm With Browser Back

    28/39

    Lets start with "Recycling" Of application Pool

    Recycling

    Recycling Application pool means recycle the Worker process (w3wp.exe) and the

    memory used for the web application. Its very good practice to recycle the workerprocess periodically . Which keep application running smooth. There are two types of

    recycling related with Application pool

    Recycling Worker Process - Predefined Settings

    Recycling Worker Process - Based on Memory

    Recycling Worker Process - Predefined Settings

    Worker process recycling is the replacing of the instance of the application in

    memory. IIS 6.0 can automatically recycle worker processes by restarting the worker

    process that are assigned to an application pool and associated with websites. This

    improve the web sites performance and keep web sites up and running smoothly.

    Fig: Application pool Recycling- Worker Process.

    There are three types of settings are available for recycling worker process.

    In Minutes

    Number of Request

    At given time

    Recycle Worker Process (In Minutes) :

  • 8/9/2019 Web Garden and Web Farm With Browser Back

    29/39

    We can set a specific time period after which worker process will be recycle . IIS will

    take care of all the current running request.

    Recycle Worker Process (Number of Request) :

    We can configure Application with specific given number of request. Once IISreached to that limit, worker process will recycled automatically.

    Recycle Worker Process (In Minutes) :

    If we want to recycle the worker process at any given time of period, we can also do

    that configuration on IIS. We can also set multiple time for that.

    Fig: Application pool Recycling- Worker Process : Time Setting.

    Recycling Worker Process - Based on Memory

    Server Memory is a big concern for an web application. So some time we may need

    to clean up the worker process based on the memory consume by it. There are two

    types of settings that we can configure in application pool to recycle the worker

    process based of memory consumption. These are,

    Maximum Virtual Memory Used

    Maximum Used memory

  • 8/9/2019 Web Garden and Web Farm With Browser Back

    30/39

    Fig: Application pool Recycling- Worker Process.

    At any time if the worker process consume the specified memory ( at memory

    recycling settings ) it will recycled automatically.

    What happened during Application Pool Recycling ?

    This is quite interesting question. Based on above settings, an application pool canrecycle any time. So what happened to all the users who are accessing the site on

    that time ? We do not need to worry about that. This process is transparent from

    client. When you recycle an application pool, HTTP.SYS holds onto the client

    connection in kernel mode while the user mode worker process recycles. After

    the process recycle, HTTP.SYS transparently routes the new requests to the new

    worker process.

    Performance :

    Moving to the Performance tab in the Properties dialog box of the selected results

    in the following output.

  • 8/9/2019 Web Garden and Web Farm With Browser Back

    31/39

    Fig: Application Pool Performance

    To improve the performance of web application we can setup the performance

    settings for an application pool. We can set the shut down time of worker process

    based on the ideal time. worker process will be shut down on given time period if it

    seat ideal. When ever a new requests come it will live again. Another important

    thing for improve the performance is "Web Garden".

    Web Garden

    Overview of web garden

    By default Each Application Pool runs with a Single Worker Process (W3Wp.exe). We

    can assign multiple Worker Process With a Single Application Pool. An ApplicationPoll with multiple Worker process called Web Gardens. Many worker

    processes with same Application Pool can sometimes provide better throughput

    performance and application response time. And Each Worker Process Should have

    there own Thread and Own Memory space.

  • 8/9/2019 Web Garden and Web Farm With Browser Back

    32/39

    Fig: Web Garden ( Application Pool with Multiple worker process )

    As Given in a Picture, in IIS Server there may be multiple Application pool and each

    application pool having at least a single Worker Process. Web Garden should contain

    multiple Worker process.

    There are some Certain Restriction to use Web Garden with your web application. If

    we use Session Mode to "in proc", our application will not work correctly because

    session will be handled by different Worker Process. For Avoid this Type of problem

    we should have to use Session Mode "out proc" and we can use "Session State

    Server" or "SQL-Server Session State".

    How to create web garden ?

    We need to increase the number of worker process on performance tab.

    Fig: Web Garden Creation

    Main Advantage : The worker processes in a Web garden share the requests that

    arrive for that particular application pool. If one worker process fails, another worker

    process can continue to process requests.

    Health :

  • 8/9/2019 Web Garden and Web Farm With Browser Back

    33/39

  • 8/9/2019 Web Garden and Web Farm With Browser Back

    34/39

    Enable Rapid-fail protection

    When enabling Rapid Fail Protection the application pool is shut down if there are a

    specified number of worker process crashes within a specified time period . When

    this happens the WWW Publishing Service puts all applications in the application pool

    "out of service".

    Failure Count

    The default value for failure count is 5 minutes. This property specifies the maximum

    number of failures allowed within the number of minutes specified by the "Time

    period" property, before the application pool is shut down by Rapid Fail Protection.

    Means If the number of failure is more than the specified with the given time

    application pool should be puts on "out of service mode"

    Time period

    This property specifies the number of minutes before the failure count for a process

    is reset. By default is sets to 5 minutes.

    Startup time limit

    Start up time limit property specifies the amount of time that the WWW Publishing

    Service should wait for a worker process to finish starting up and reporting to the

    WWW Service. By general it means time taken to start a Worker process .

    Shutdown time limit

    This is the shutdown time for an worker process. This is the time required to execute

    the all old running worker process request before it shut down during the recycle

    time.

    Identity

    This is the last and final setting for an Application Pool. Application pool having 3

    types of identity. "Network Service" is the default Identify. "defaultappPool" is

    also runs under the "Network Service" Identity. Below are the listed Application

    pool identity with description.

    Identity Description

    LocalSystem

    LocalSystem is a built-in account that has administrative

    privileges on the server. It can access both local and

    remote resources. For any kind accessing of server files or

    resources we have to set the Identity of application pool to

    Local System.

  • 8/9/2019 Web Garden and Web Farm With Browser Back

    35/39

    LocalServices

    LocalServices Built-in account has privileges of an

    authenticated local user account. It does not have any

    network access permission

    NetworkServices

    This is the default Identity of Application Pool

    NetworkServices has privileges of authenticated local user

    account.

    Navigating to Identity tab will show following screen.

    Fig: Application Pool Identity Configuration

    We can also configure the Application pool under some given user account. For that

    we need to select the "Configurable" option on "identity" tab.

    This is all about the application pool. Hope now you have a very good understanding

    on what application pool is, how to create and configure application pool.

    Q : You are using file upload control in your web application and it is working fine

    on Visual Studio but when you host the same code on IIS it is not working. This is

    very common problem in web hosting when file upload is involved.

  • 8/9/2019 Web Garden and Web Farm With Browser Back

    36/39

    A :When a web application runs under visual studio - ASP.NET Engine integrated

    with visual studio takes care of all the executions. And this engine has sufficient

    rights so that it can write data on your disk. But when you host the site on IIS, as I

    have already mention it runs under the "Network Services" Identity. Which is

    having very minimum rights on your system. The user can only have the read access

    of the site. So for resolving the file upload issue you need to change the Identity ofapplication pool from "Network Service" to "Local System". Local System

    identity means client can have write access on your hard drive. This will resolve your

    issue of file uploading on server.

    You can also resolve this issue by giving Write access permission to the file

    destination folder for "Everyone".

    Enabling Web Service Extension

    IIS 6.0 provides certain type of configuration from where we

    can enable/disable web service extension. If we want to prohibit/restrict any kind

    of extension we need to select the extension and click on "Prohibit" button.

    Fig: Web Service Extension Configuration

    Note : IfASP.NET v 2.0.X.XXXX extension is prohibited over here, you will not

    able to access the site which are running on .NET 2.0 .

    Debugging Your Application That Hosted on IIS

  • 8/9/2019 Web Garden and Web Farm With Browser Back

    37/39

    If your site is hosted on IIS and we want to debug the site then main thing that we

    need to attaching of worker process with Visual Studio. There are two possible

    scenario for debugging from IIS.

    1. Site is Hosted on Local IIS Server : Local IIS Debugging

    2. Site is Hosted on Remote IIS Server : Remote IIS Debugging

    I have already published two complete article on code project on above topic. Please

    refer those hyperlink for details.

    Summary

    To summarize , this article is for the beginners who are trying to

    learn something on IIS. This article gives a complete coverage of IIS, Hosting

    sites on IIS, Application pool creation etc. I have also mentioned few tips which are

    very commonly used in dealing with IIS. Hope this will help the beginners who are

    struggling with site hosting on IIS and configure it. There are so many things

    related with IIS and it is not possible to complete all of them in a single article. This

    is just all in one overview. I hope that in the future I will publish a few more articles

    on IIS in details. Please give your valuable feedback and suggestions in order to

    improve the article. Thank you.

    My IIS Articles @ Code Project

    Below are the few articles on IIS that I have published at Code project.

    1. Deploying ASP. Net Websites on IIS 7.0

    2. Debug Your ASP.NET Application that Hosted on IIS : Process Attach and Identify

    which process to attach.

    3. Remote IIS Debugging : Debug your ASP.NET Application which is hosted on

    "Remote IIS Server"

    disable / Handle back button of the browser.

    Introduction

    How many time, it has happened with you that when your client hasasked you to that end-user should not be allowed to go back to

    previous page using browsers back button? But the actual problem is

    we don't have any control on the browser's back button. The Backbrowser button cannot be actually disabled by a web application as the

    http://www.codeproject.com/KB/aspnet/ProcessAttache.aspxhttp://www.codeproject.com/KB/aspnet/IISRemoteDebugging.aspxhttp://www.codeproject.com/KB/aspnet/IIS7ASPNet.aspxhttp://www.codeproject.com/KB/aspnet/ProcessAttache.aspxhttp://www.codeproject.com/KB/aspnet/ProcessAttache.aspxhttp://www.codeproject.com/KB/aspnet/IISRemoteDebugging.aspxhttp://www.codeproject.com/KB/aspnet/IISRemoteDebugging.aspxhttp://www.codeproject.com/KB/aspnet/ProcessAttache.aspxhttp://www.codeproject.com/KB/aspnet/IISRemoteDebugging.aspxhttp://www.codeproject.com/KB/aspnet/IIS7ASPNet.aspxhttp://www.codeproject.com/KB/aspnet/ProcessAttache.aspxhttp://www.codeproject.com/KB/aspnet/ProcessAttache.aspxhttp://www.codeproject.com/KB/aspnet/IISRemoteDebugging.aspxhttp://www.codeproject.com/KB/aspnet/IISRemoteDebugging.aspx
  • 8/9/2019 Web Garden and Web Farm With Browser Back

    38/39

    browser security will not allow this. But yes there are number ofworkarounds using which we can achieve this functionality.

    Solutions

    Using JavaScript, we can forward the user to the same page if user

    presses the back button of the browser. See the code below :

    function GoBack(){

    window.history.forward();}

    Call this JavaScript function on the onload event of body tag.

    This method will always redirect to the user on the current page itself.

    For example, user is on page 1 and there is a link on Page 1 which

    takes user to Page 2. Now when user clicks on the link, browser

    redirects the control to Page 2. Now from page 2 if user press back

    button of the browser then user will be redirect to the page 2 itself.

    window.history contains the collection of the page visited by the user

    for particular browser session. As an alternative ofwindow.history.forward(), one can also use window.history.go(+1). As

    both are same.

    But if we want to display web page expired warning on the click of

    back button as we normally see in all banking sites? Actually what

    happens is, when you press the back button, browser takes the page

    from cache and display it on screen. So if we want to show web page

    expired warning, we should not allow the browser to cache the page.

    We can achieve this via ASP.NET.

    protected void Page_Load(object sender, EventArgs e){

    Response.Cache.SetCacheability(HttpCacheability.NoCache);}

  • 8/9/2019 Web Garden and Web Farm With Browser Back

    39/39

    This code will not allow page to be cached. But one problem with this

    approach is that this will only work when there are some dynamic

    content in the page. i.e. change any drop down box value and then try

    to press back button.

    Conclusion

    Your comments are always appreciated. If you can find out bettersolution then this please let me also know.