Dr. Dobb's is part of the Informa Tech Division of Informa PLC

This site is operated by a business or businesses owned by Informa PLC and all copyright resides with them. Informa PLC's registered office is 5 Howick Place, London SW1P 1WG. Registered in England and Wales. Number 8860726.


Channels ▼
RSS

Web Farm Setup Tips


Session State and SQL Server

Deploying an ASP.NET application in a web farm scenario poses a few extra configuration issues. Because the requests for the application can be processed on any machine in the farm, all machine.config files in the various machines must be synchronized on the value of a few critical attributes. There are three information types that must be configured in the same way across the farm: forms authentication cookies, view-state message authentication check (MAC) generation, and session state. The information corresponds to three sections: <machineKey>, <authentication>, and <sessionState>.

The <machineKey> section contains the keys used for encryption (the validationKey attribute) and decryption (the decryptionKey attribute) of the form’s authentication cookie. It goes without saying that all machines in the farm must be able to process an authenticated user, and for this to happen, all of them must be able to decrypt and encrypt authentication cookies in the same way. Hence, the keys must be identical on all machines. The validation attribute must also be replicated if the authentication check is enabled for the view state of one or more pages. The message authentication check (MAC) takes place if the @Page’s EnableViewStateMac attribute is set to True.

The <authentication> section allows you to configure a web site for various types of user authentication, including form-based authentication as well as Passport and IIS-driven authentication. This section has two mutually exclusive subsections—<forms> and <passport>—and the mode attribute to control the authentication mode requested by an application. In case of web farms, the settings for the <forms> section must coincide across the farm to enable the correct treatment of the client cookies.

Finally, all machines in the farm must handle session data in the same way, whether through SQL Server or a remote server. In light of this, all machines must be synchronized on the configuration of the <sessionState> section.

If you have total control over the web server environment, then propagating those settings is not that hard. You just prepare a made-to-measure configuration file and copy it on all machines. In a service provider scenario (ISP), instead, it may happen that some of these settings (or even other settings) are locked down at the machine level by the system administrator. This means that you can’t modify the existing machine.config file and can’t override those settings within an application-specific web.config. In this case, you have only one possible way out—ask (or should I say, beg?) the administrator to create a <location> section for you in all machine.config files. A <location> section is a sort of virtual copy of the machine settings that apply only to a particular web path—just that of your application. A machine.config file can contain as many <location> sections as there are running applications.


Dino Esposito is Wintellect's ADO.NET and XML expert, and a trainer and consultant based in Rome, Italy. Dino is a contributing editor to Windows Developer Network and MSDN Magazine, and the author of several books for Microsoft Press including Building Web Solutions with ASP.NET and ADO.NET and Applied XML Programming for .NET. Contact Dino at [email protected].


Related Reading


More Insights






Currently we allow the following HTML tags in comments:

Single tags

These tags can be used alone and don't need an ending tag.

<br> Defines a single line break

<hr> Defines a horizontal line

Matching tags

These require an ending tag - e.g. <i>italic text</i>

<a> Defines an anchor

<b> Defines bold text

<big> Defines big text

<blockquote> Defines a long quotation

<caption> Defines a table caption

<cite> Defines a citation

<code> Defines computer code text

<em> Defines emphasized text

<fieldset> Defines a border around elements in a form

<h1> This is heading 1

<h2> This is heading 2

<h3> This is heading 3

<h4> This is heading 4

<h5> This is heading 5

<h6> This is heading 6

<i> Defines italic text

<p> Defines a paragraph

<pre> Defines preformatted text

<q> Defines a short quotation

<samp> Defines sample computer code text

<small> Defines small text

<span> Defines a section in a document

<s> Defines strikethrough text

<strike> Defines strikethrough text

<strong> Defines strong text

<sub> Defines subscripted text

<sup> Defines superscripted text

<u> Defines underlined text

Dr. Dobb's encourages readers to engage in spirited, healthy debate, including taking us to task. However, Dr. Dobb's moderates all comments posted to our site, and reserves the right to modify or remove any content that it determines to be derogatory, offensive, inflammatory, vulgar, irrelevant/off-topic, racist or obvious marketing or spam. Dr. Dobb's further reserves the right to disable the profile of any commenter participating in said activities.

 
Disqus Tips To upload an avatar photo, first complete your Disqus profile. | View the list of supported HTML tags you can use to style comments. | Please read our commenting policy.