473,513 Members | 2,493 Online
Bytes | Software Development & Data Engineering Community
+ Post

Home Posts Topics Members FAQ

GLOBAL.ASA and IIS 6.0

Hi there,

How does IIS 6.0 treat the global.asa file? I had the following problem;

1. uploaded a new site to the win3k server
2. had incorrect db connection string in Session_OnStart in global.asa and
website caused errors.
3. Changed the global.asa file to include the correct details. Saved the
file. Still got the same errors.

I could not resolve this unless restarting the WWW Service on this server.
In IIS 5.0 the global.asa file would reload after resaving it (as the
timestamp is updated).

I even waited the next day before restarting the service because I though
Session_OnStart expires after my session ends...but the error was still there
in the morning.

Hopefully someone will make sense of it for me. Here is the code (I
inherited) in the global.asa
Sub Application_OnStart
Application("DB.ConnectionString") = ""
Application("MaxLoginAttempts") = 5
Set Application("Con") = Server.CreateObject("ADODB.Connection")
Session("Test") = Now()
End Sub
Sub Session_OnStart

Application("DB_ConnectionString") = "Provider=SQLOLEDB; Data
Source=myDBServer; Initial Catalog=DatabaseName; User ID=sa;
Password=mypassword"

'changed db connection application var to SQL server

Session("LoginAttempts") = 0

Session("XAN_ConnectionString") = Application("DB_ConnectionString")
Session("XAN_adminConnectionString") = Application("DB_ConnectionString")

Session("XAN_ConnectionTimeout") = 15
Session("XAN_CommandTimeout") = 30
Session("XAN_CursorLocation") = 3

Set Session("Con") = Server.CreateObject("ADODB.Connection")
Session("Con").ConnectionTimeout = Session("XAN_ConnectionTimeout")
Session("Con").CommandTimeout = Session("XAN_CommandTimeout")
Session("XAN_ConnectionString") = "Provider=SQLOLEDB; Data
Source=myDBServer; Initial Catalog=DatabaseName; User ID=sa;
Password=mypassword"

Response.Buffer = true
if Application("Con").State = 0 then
Application("Con").Open Session("XAN_ConnectionString")
end if
'************************************************* ********************************
End Sub
Jul 19 '05 #1
7 6564
Why are you opening an ADO connection and storing it in Session scope?
That's a really bad way of developing ASP/ADO based applications.
Seriously - you should instantiate and open the connection on each page, and
close and dispose of it on each page. This enables your application to take
advantage of connection pooling. The way you are currently doing it is
really bad - it's not scalable whatsoever.

Suggest you tell us what your errors are to troubleshoot your global.asa
problems (may not have anything to do with global.asa itself - maybe you
have a permissions issue or similar so you need to tweak permissions).

Cheers
Ken
"Matt Calhoon" <ma**@community.nospam> wrote in message
news:2F**********************************@microsof t.com...
Hi there,

How does IIS 6.0 treat the global.asa file? I had the following problem;

1. uploaded a new site to the win3k server
2. had incorrect db connection string in Session_OnStart in global.asa and
website caused errors.
3. Changed the global.asa file to include the correct details. Saved the
file. Still got the same errors.

I could not resolve this unless restarting the WWW Service on this server.
In IIS 5.0 the global.asa file would reload after resaving it (as the
timestamp is updated).

I even waited the next day before restarting the service because I though
Session_OnStart expires after my session ends...but the error was still
there
in the morning.

Hopefully someone will make sense of it for me. Here is the code (I
inherited) in the global.asa
Sub Application_OnStart
Application("DB.ConnectionString") = ""
Application("MaxLoginAttempts") = 5
Set Application("Con") = Server.CreateObject("ADODB.Connection")
Session("Test") = Now()
End Sub
Sub Session_OnStart

Application("DB_ConnectionString") = "Provider=SQLOLEDB; Data
Source=myDBServer; Initial Catalog=DatabaseName; User ID=sa;
Password=mypassword"

'changed db connection application var to SQL server

Session("LoginAttempts") = 0

Session("XAN_ConnectionString") = Application("DB_ConnectionString")
Session("XAN_adminConnectionString") = Application("DB_ConnectionString")

Session("XAN_ConnectionTimeout") = 15
Session("XAN_CommandTimeout") = 30
Session("XAN_CursorLocation") = 3

Set Session("Con") = Server.CreateObject("ADODB.Connection")
Session("Con").ConnectionTimeout = Session("XAN_ConnectionTimeout")
Session("Con").CommandTimeout = Session("XAN_CommandTimeout")
Session("XAN_ConnectionString") = "Provider=SQLOLEDB; Data
Source=myDBServer; Initial Catalog=DatabaseName; User ID=sa;
Password=mypassword"

Response.Buffer = true
if Application("Con").State = 0 then
Application("Con").Open Session("XAN_ConnectionString")
end if
'************************************************* ********************************
End Sub

Jul 19 '05 #2
Hi Ken,

thanks for your email.

I mentioned in my post that I inherited the code (from another web
development company), and for time constraints cannot be changed. This site
(along with 200 others) is being moved to a new webfarm (which has IIS 6.0).
I can't be fixing all the code for each site unless I have nothing to do for
6 months.

....ok so my question remains; Does IIS 6.0 treat global.asa any different to
IIS 5.0?
Suggest you tell us what your errors are to troubleshoot your global.asa
problems
The error was "incorrect login for user 'mydatabaseuser'. After I changed
the login to the correct password, the change did not take place unless I
restarted the www service (the next day). So it looks as though the
global.asa file is cached until restart of www.


"Ken Schaefer" wrote:
Why are you opening an ADO connection and storing it in Session scope?
That's a really bad way of developing ASP/ADO based applications.
Seriously - you should instantiate and open the connection on each page, and
close and dispose of it on each page. This enables your application to take
advantage of connection pooling. The way you are currently doing it is
really bad - it's not scalable whatsoever.

Suggest you tell us what your errors are to troubleshoot your global.asa
problems (may not have anything to do with global.asa itself - maybe you
have a permissions issue or similar so you need to tweak permissions).

Cheers
Ken
"Matt Calhoon" <ma**@community.nospam> wrote in message
news:2F**********************************@microsof t.com...
Hi there,

How does IIS 6.0 treat the global.asa file? I had the following problem;

1. uploaded a new site to the win3k server
2. had incorrect db connection string in Session_OnStart in global.asa and
website caused errors.
3. Changed the global.asa file to include the correct details. Saved the
file. Still got the same errors.

I could not resolve this unless restarting the WWW Service on this server.
In IIS 5.0 the global.asa file would reload after resaving it (as the
timestamp is updated).

I even waited the next day before restarting the service because I though
Session_OnStart expires after my session ends...but the error was still
there
in the morning.

Hopefully someone will make sense of it for me. Here is the code (I
inherited) in the global.asa
Sub Application_OnStart
Application("DB.ConnectionString") = ""
Application("MaxLoginAttempts") = 5
Set Application("Con") = Server.CreateObject("ADODB.Connection")
Session("Test") = Now()
End Sub
Sub Session_OnStart

Application("DB_ConnectionString") = "Provider=SQLOLEDB; Data
Source=myDBServer; Initial Catalog=DatabaseName; User ID=sa;
Password=mypassword"

'changed db connection application var to SQL server

Session("LoginAttempts") = 0

Session("XAN_ConnectionString") = Application("DB_ConnectionString")
Session("XAN_adminConnectionString") = Application("DB_ConnectionString")

Session("XAN_ConnectionTimeout") = 15
Session("XAN_CommandTimeout") = 30
Session("XAN_CursorLocation") = 3

Set Session("Con") = Server.CreateObject("ADODB.Connection")
Session("Con").ConnectionTimeout = Session("XAN_ConnectionTimeout")
Session("Con").CommandTimeout = Session("XAN_CommandTimeout")
Session("XAN_ConnectionString") = "Provider=SQLOLEDB; Data
Source=myDBServer; Initial Catalog=DatabaseName; User ID=sa;
Password=mypassword"

Response.Buffer = true
if Application("Con").State = 0 then
Application("Con").Open Session("XAN_ConnectionString")
end if
'************************************************* ********************************
End Sub


Jul 19 '05 #3
That is perfectly normal to have to restart the IIS service after making
changes to the global.asa file.

I remember when I was doing web development on IIS 4 I had to restart
the IIS service to get the changes in my global.asa to take effect.

Matt Calhoon wrote:
Suggest you tell us what your errors are to troubleshoot your global.asa
problems

The error was "incorrect login for user 'mydatabaseuser'. After I changed
the login to the correct password, the change did not take place unless I
restarted the www service (the next day). So it looks as though the
global.asa file is cached until restart of www.


Jul 19 '05 #4
That is *not* normal.

IIS should be aware of changes to global.asa file (via Windows File Change
Notification), and then the application is restarted. This was always
potential source of problems in ASP apps (because if a developer "touched"
the global.asa file, then the app would be restarted, and all existing user
sessions would be lost)

Cheers
Ken
"joker" <no*****@netzero.com> wrote in message
news:el*************@TK2MSFTNGP11.phx.gbl...
That is perfectly normal to have to restart the IIS service after making
changes to the global.asa file.

I remember when I was doing web development on IIS 4 I had to restart the
IIS service to get the changes in my global.asa to take effect.

Matt Calhoon wrote:
Suggest you tell us what your errors are to troubleshoot your global.asa
problems

The error was "incorrect login for user 'mydatabaseuser'. After I
changed the login to the correct password, the change did not take place
unless I restarted the www service (the next day). So it looks as though
the global.asa file is cached until restart of www.

Jul 19 '05 #5
Hi,

At the moment you are opening a separate connection for each individual
user, and holding it open *even* when the connection is not being used.
Additionally, the connection is not being released until the session times
out. For a large application, with connection pooling, you should not need
more than 20-30 connections, however your application is going to result in
hundreds of connections. SQL Server (nor any other DBMS) won't scale to
hundreds, or thousands of concurrent connections.

What I suggest you do is write a little function that returns an open
connection, and stick that into every page you have (via find-n-replace).
Then all you need to do is change all references to Session("Con") to this
page level connnection.

I also noticed just now that you are attempting to open, and store an ADO
connection in Application scope! That's just as bad - that means you are
serialising all access to your database through a single connection whenever
you try to use that. I have no idea who wrote this application before, but
that's just about the worst way to write anything (unless you are using that
one connection to keep a connection persistantly in the OLEDB/ODBC pool, but
you shouldn't need to do that on a high-load app anyway). This is a really
good resource on pooling:
http://msdn.microsoft.com/library/de...l/pooling2.asp

Cheers
Ken

"Matt Calhoon" <ma**@community.nospam> wrote in message
news:60**********************************@microsof t.com...
Hi Ken,

thanks for your email.

I mentioned in my post that I inherited the code (from another web
development company), and for time constraints cannot be changed. This
site
(along with 200 others) is being moved to a new webfarm (which has IIS
6.0).
I can't be fixing all the code for each site unless I have nothing to do
for
6 months.

...ok so my question remains; Does IIS 6.0 treat global.asa any different
to
IIS 5.0?
Suggest you tell us what your errors are to troubleshoot your global.asa
problems


The error was "incorrect login for user 'mydatabaseuser'. After I changed
the login to the correct password, the change did not take place unless I
restarted the www service (the next day). So it looks as though the
global.asa file is cached until restart of www.


"Ken Schaefer" wrote:
Why are you opening an ADO connection and storing it in Session scope?
That's a really bad way of developing ASP/ADO based applications.
Seriously - you should instantiate and open the connection on each page,
and
close and dispose of it on each page. This enables your application to
take
advantage of connection pooling. The way you are currently doing it is
really bad - it's not scalable whatsoever.

Suggest you tell us what your errors are to troubleshoot your global.asa
problems (may not have anything to do with global.asa itself - maybe you
have a permissions issue or similar so you need to tweak permissions).

Cheers
Ken
"Matt Calhoon" <ma**@community.nospam> wrote in message
news:2F**********************************@microsof t.com...
> Hi there,
>
> How does IIS 6.0 treat the global.asa file? I had the following
> problem;
>
> 1. uploaded a new site to the win3k server
> 2. had incorrect db connection string in Session_OnStart in global.asa
> and
> website caused errors.
> 3. Changed the global.asa file to include the correct details. Saved
> the
> file. Still got the same errors.
>
> I could not resolve this unless restarting the WWW Service on this
> server.
> In IIS 5.0 the global.asa file would reload after resaving it (as the
> timestamp is updated).
>
> I even waited the next day before restarting the service because I
> though
> Session_OnStart expires after my session ends...but the error was still
> there
> in the morning.
>
> Hopefully someone will make sense of it for me. Here is the code (I
> inherited) in the global.asa
>
>
> Sub Application_OnStart
> Application("DB.ConnectionString") = ""
> Application("MaxLoginAttempts") = 5
> Set Application("Con") = Server.CreateObject("ADODB.Connection")
> Session("Test") = Now()
> End Sub
>
>
> Sub Session_OnStart
>
>
>
> Application("DB_ConnectionString") = "Provider=SQLOLEDB; Data
> Source=myDBServer; Initial Catalog=DatabaseName; User ID=sa;
> Password=mypassword"
>
> 'changed db connection application var to SQL server
>
> Session("LoginAttempts") = 0
>
> Session("XAN_ConnectionString") = Application("DB_ConnectionString")
> Session("XAN_adminConnectionString") =
> Application("DB_ConnectionString")
>
> Session("XAN_ConnectionTimeout") = 15
> Session("XAN_CommandTimeout") = 30
> Session("XAN_CursorLocation") = 3
>
> Set Session("Con") = Server.CreateObject("ADODB.Connection")
> Session("Con").ConnectionTimeout = Session("XAN_ConnectionTimeout")
> Session("Con").CommandTimeout = Session("XAN_CommandTimeout")
>
>
> Session("XAN_ConnectionString") = "Provider=SQLOLEDB; Data
> Source=myDBServer; Initial Catalog=DatabaseName; User ID=sa;
> Password=mypassword"
>
> Response.Buffer = true
>
>
> if Application("Con").State = 0 then
> Application("Con").Open Session("XAN_ConnectionString")
> end if
>
>
> '************************************************* ********************************
> End Sub
>
>


Jul 19 '05 #6
write yourself a "reload.asp" script that contains the same code as in
global.asa (change global.asa then copy/paste to reload.asp).

Note all of the other suggestions regarding session-scope objects and
especially the application-scope connection object that will cause you no
end of trouble later. You might want to bite the bullet and fix it now (tell
the boss that porting to win 2003 requires some changes if you have to).

--
Mark Schupp
Head of Development
Integrity eLearning
www.ielearning.com
"Matt Calhoon" <ma**@community.nospam> wrote in message
news:2F**********************************@microsof t.com...
Hi there,

How does IIS 6.0 treat the global.asa file? I had the following problem;

1. uploaded a new site to the win3k server
2. had incorrect db connection string in Session_OnStart in global.asa and
website caused errors.
3. Changed the global.asa file to include the correct details. Saved the
file. Still got the same errors.

I could not resolve this unless restarting the WWW Service on this server.
In IIS 5.0 the global.asa file would reload after resaving it (as the
timestamp is updated).

I even waited the next day before restarting the service because I though
Session_OnStart expires after my session ends...but the error was still there in the morning.

Hopefully someone will make sense of it for me. Here is the code (I
inherited) in the global.asa
Sub Application_OnStart
Application("DB.ConnectionString") = ""
Application("MaxLoginAttempts") = 5
Set Application("Con") = Server.CreateObject("ADODB.Connection")
Session("Test") = Now()
End Sub
Sub Session_OnStart

Application("DB_ConnectionString") = "Provider=SQLOLEDB; Data
Source=myDBServer; Initial Catalog=DatabaseName; User ID=sa;
Password=mypassword"

'changed db connection application var to SQL server

Session("LoginAttempts") = 0

Session("XAN_ConnectionString") = Application("DB_ConnectionString")
Session("XAN_adminConnectionString") = Application("DB_ConnectionString")

Session("XAN_ConnectionTimeout") = 15
Session("XAN_CommandTimeout") = 30
Session("XAN_CursorLocation") = 3

Set Session("Con") = Server.CreateObject("ADODB.Connection")
Session("Con").ConnectionTimeout = Session("XAN_ConnectionTimeout")
Session("Con").CommandTimeout = Session("XAN_CommandTimeout")
Session("XAN_ConnectionString") = "Provider=SQLOLEDB; Data
Source=myDBServer; Initial Catalog=DatabaseName; User ID=sa;
Password=mypassword"

Response.Buffer = true
if Application("Con").State = 0 then
Application("Con").Open Session("XAN_ConnectionString")
end if
'************************************************* **************************
****** End Sub

Jul 19 '05 #7
On Tue, 14 Sep 2004 20:57:07 -0700, Matt Calhoon
<ma**@community.nospam> wrote:
Hi Ken,

thanks for your email.

I mentioned in my post that I inherited the code (from another web
development company), and for time constraints cannot be changed. This site
(along with 200 others) is being moved to a new webfarm (which has IIS 6.0).
I can't be fixing all the code for each site unless I have nothing to do for
6 months.

...ok so my question remains; Does IIS 6.0 treat global.asa any different to
IIS 5.0?
Probably, but not in relation to what you describe. When the
global.asa is changed, it should reflect in your apps just as it did
in IIS5.
Suggest you tell us what your errors are to troubleshoot your global.asa
problems


The error was "incorrect login for user 'mydatabaseuser'. After I changed
the login to the correct password, the change did not take place unless I
restarted the www service (the next day). So it looks as though the
global.asa file is cached until restart of www.


It shouldn't be, and certainly not until the next day. But the server
or client may have cached something that did affect this, it's
impossible to say without a lot more details.

But since changing global.asa drops sessions anyway, it wouldn't be a
stretch to simply do a restart of the app or site, or IIS itself
(depends on what your apps do, and how your sites are configured...).

Jeff
"Ken Schaefer" wrote:
Why are you opening an ADO connection and storing it in Session scope?
That's a really bad way of developing ASP/ADO based applications.
Seriously - you should instantiate and open the connection on each page, and
close and dispose of it on each page. This enables your application to take
advantage of connection pooling. The way you are currently doing it is
really bad - it's not scalable whatsoever.

Suggest you tell us what your errors are to troubleshoot your global.asa
problems (may not have anything to do with global.asa itself - maybe you
have a permissions issue or similar so you need to tweak permissions).

Cheers
Ken
"Matt Calhoon" <ma**@community.nospam> wrote in message
news:2F**********************************@microsof t.com...
> Hi there,
>
> How does IIS 6.0 treat the global.asa file? I had the following problem;
>
> 1. uploaded a new site to the win3k server
> 2. had incorrect db connection string in Session_OnStart in global.asa and
> website caused errors.
> 3. Changed the global.asa file to include the correct details. Saved the
> file. Still got the same errors.
>
> I could not resolve this unless restarting the WWW Service on this server.
> In IIS 5.0 the global.asa file would reload after resaving it (as the
> timestamp is updated).
>
> I even waited the next day before restarting the service because I though
> Session_OnStart expires after my session ends...but the error was still
> there
> in the morning.
>
> Hopefully someone will make sense of it for me. Here is the code (I
> inherited) in the global.asa
>
>
> Sub Application_OnStart
> Application("DB.ConnectionString") = ""
> Application("MaxLoginAttempts") = 5
> Set Application("Con") = Server.CreateObject("ADODB.Connection")
> Session("Test") = Now()
> End Sub
>
>
> Sub Session_OnStart
>
>
>
> Application("DB_ConnectionString") = "Provider=SQLOLEDB; Data
> Source=myDBServer; Initial Catalog=DatabaseName; User ID=sa;
> Password=mypassword"
>
> 'changed db connection application var to SQL server
>
> Session("LoginAttempts") = 0
>
> Session("XAN_ConnectionString") = Application("DB_ConnectionString")
> Session("XAN_adminConnectionString") = Application("DB_ConnectionString")
>
> Session("XAN_ConnectionTimeout") = 15
> Session("XAN_CommandTimeout") = 30
> Session("XAN_CursorLocation") = 3
>
> Set Session("Con") = Server.CreateObject("ADODB.Connection")
> Session("Con").ConnectionTimeout = Session("XAN_ConnectionTimeout")
> Session("Con").CommandTimeout = Session("XAN_CommandTimeout")
>
>
> Session("XAN_ConnectionString") = "Provider=SQLOLEDB; Data
> Source=myDBServer; Initial Catalog=DatabaseName; User ID=sa;
> Password=mypassword"
>
> Response.Buffer = true
>
>
> if Application("Con").State = 0 then
> Application("Con").Open Session("XAN_ConnectionString")
> end if
>
>
> '************************************************* ********************************
> End Sub
>
>



Jul 19 '05 #8

This thread has been closed and replies have been disabled. Please start a new discussion.

Similar topics

8
102743
by: David Hitillambeau | last post by:
Hi guys, As I am new to Python, i was wondering how to declare and use global variables. Suppose i have the following structure in the same module (same file): def foo: <instructions>...
1
2217
by: Andr? Roberge | last post by:
I have the following two files: #--testexec.py-- def exec_code(co): try: exec co except: print "error" #-- test.py--
7
2674
by: Lyn | last post by:
Hi and Season's Greetings to all. I have a question regarding the use of a qualifier word "Global". I cannot find any reference to this in Access help, nor in books or on the Internet. "Global"...
10
6743
by: David P. Donahue | last post by:
When I wrote websites in VB .NET, I would often put functions in Global for all the pages to call. Now, in C#, doing so results in "references to non-static objects" and whatnot. I realize what...
22
3728
by: fd123456 | last post by:
Hi Tom ! Sorry about the messy quoting, Google is playing tricks on me at the moment. > Global.asax is where you normally have the Global Application > and Session variables and code to...
9
8621
by: CDMAPoster | last post by:
About a year ago there was a thread about the use of global variables in A97: http://groups.google.com/group/comp.databases.ms-access/browse_frm/thread/fedc837a5aeb6157 Best Practices by Kang...
3
2755
by: User1014 | last post by:
A global variable is really just a property of the "Global Object", so what does that make a function defined in the global context? A method of the Global Object? ...
8
13175
by: Rob T | last post by:
When I was using VS2003, I was able to compile my asp.net project locally on my machine and copy it to the production server and it would run just fine. I've now converted to VS2005. The project...
15
2528
by: =?Utf-8?B?UGF0Qg==?= | last post by:
Just starting to move to ASP.NET 2.0 and having trouble with the Global.asax code file. In 1.1 I could have a code behind file for the global.asax file. This allow for shared variables of the...
1
29312
weaknessforcats
by: weaknessforcats | last post by:
C++: The Case Against Global Variables Summary This article explores the negative ramifications of using global variables. The use of global variables is such a problem that C++ architects have...
0
7260
marktang
by: marktang | last post by:
ONU (Optical Network Unit) is one of the key components for providing high-speed Internet services. Its primary function is to act as an endpoint device located at the user's premises. However,...
0
7384
Oralloy
by: Oralloy | last post by:
Hello folks, I am unable to find appropriate documentation on the type promotion of bit-fields when using the generalised comparison operator "<=>". The problem is that using the GNU compilers,...
0
7525
tracyyun
by: tracyyun | last post by:
Dear forum friends, With the development of smart home technology, a variety of wireless communication protocols have appeared on the market, such as Zigbee, Z-Wave, Wi-Fi, Bluetooth, etc. Each...
0
5686
agi2029
by: agi2029 | last post by:
Let's talk about the concept of autonomous AI software engineers and no-code agents. These AIs are designed to manage the entire lifecycle of a software development project—planning, coding, testing,...
0
4746
by: conductexam | last post by:
I have .net C# application in which I am extracting data from word file and save it in database particularly. To store word all data as it is I am converting the whole word file firstly in HTML and...
0
3234
by: TSSRALBI | last post by:
Hello I'm a network technician in training and I need your help. I am currently learning how to create and manage the different types of VPNs and I have a question about LAN-to-LAN VPNs. The...
0
3222
by: adsilva | last post by:
A Windows Forms form does not have the event Unload, like VB6. What one acts like?
0
1596
by: 6302768590 | last post by:
Hai team i want code for transfer the data from one system to another through IP address by using C# our system has to for every 5mins then we have to update the data what the data is updated ...
0
456
bsmnconsultancy
by: bsmnconsultancy | last post by:
In today's digital era, a well-designed website is crucial for businesses looking to succeed. Whether you're a small business owner or a large corporation in Toronto, having a strong online presence...

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.