Web server cluster related problem

H

Helge Kalnes

We are running an ASP.NET application on a cluster of 3 web-servers, using
the Network Load Balancing feature of Application Center. We have
synchronized the machineKey in machine.config on the 3 web-servers, so we
can utilize a random algorithm for server selection for requests. The
application does not use either session state or application state.

We recently upgraded to .NET Framework 1.1 (including the hotfix for the
"doPostback bug"), and after that we experience a mysterious problem on our
production servers:

Let's call the servers A, B and C. Let's say you select a page (a GET
request), and it is served by either server A or B. The page contains a
form, so when you post it back and server C gets to handle the request, the
response appears to be like the original GET request. The page does not seem
to process the page as a POST request.

The same thing happens if the original page comes from server C, and the
postback is processed by server A or B.

Obviously, it seems that there is something wrong on server C.

We have checked everything we can think of. Among them the .NET Framework
installation, machine.config, and that the web application files are the
same.

Since this is a production environment, we are not allowed to use debug
tools. However, we have enabled tracing. When this problem occurs, we see
that
1) The form collection contains the posted data
2) That LoadViewState and ProcessPostData has been executed, both of which
are not executed on a GET request.
3) SessionId is unchanged

But even so, when the request is processed by the called page, it is
processed as a GET request.

Now I don't know where to keep on looking. Does it ring a bell for anyone?

Thanks,
Helge
 
T

Tommy

An ASP.NET webform detects if a request is a postback by comparing the
hash value in the viewstate of a page. This hash value is generated
by using a validation key. In the default setting, ASP.NET will
automatically generate an random validation key for each web server.
Thus, sending a POST request to a webform on a different web server
will not be recognized as a POST request because the validation key is
different.

Try changing the machine.config or web.config on each web server to
use a static validation key.

For example,

<machineKey validationKey="Some static key" validation="SHA1"/>

Tommy,
 
Joined
Jun 26, 2006
Messages
2
Reaction score
0
Check the .NET Framework version all the web server that are in the cluster

Check the .NET Framework version (including server pack versions) on all the web servers that are in the cluster. We had the same problem and we resolved the problem by having same .NET Framework version on all the web servers.

Use is the following utility that is at http://www.tmgdevelopment.co.uk/versioncheck.htm to check .NET Framework version

Bala
 
Last edited:
Joined
Jun 26, 2006
Messages
2
Reaction score
0
Check the .NET Framework version (including server pack versions) on all the web servers that are in the cluster. We had the same problem and we resolved the problem by having same .NET Framework version on all the web servers.

Use is the following utility that is at http://www.tmgdevelopment.co.uk/versioncheck.htm to check .NET Framework version

Bala
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,995
Messages
2,570,233
Members
46,820
Latest member
GilbertoA5

Latest Threads

Top