How to pass Application.Item value back to class?

G

Guest

Suggestions please for strategy to share values across app.

Scenario:

I have an asp.net app that uses some com components along with .net classes.

Configuration settings for various things are held in an xml file to which
the com has access. The xml file has different nodes for different instances
(dev,uat1,uat2 etc..) there is a flag attribute to show current instance.

The asp.net app loads the xml in global.asax and extracts a bunch of data
into Application.item variables.

What I can't then do is access the Application variables from any classes in
the app that are not associated with a web page.

Yes I can put the values into web.config but this present 2 problems
- you need to write a messy section handler with namevalue object to read
any data
- the com can't see the file (well it can but for admin purposes you
shouldn't need to duplicate values - more scope for going wrong)

Can anyone think of a way in which I can pass Application variables back to
a class?

Thanks
 
S

Scott Allen

Hi Adolf:

As long as the class is working during a web request, it can use
System.Web.HttpContext.Current to tap into the context of the web
request. For example:

HttpContext.Current.Application["foo"] = o;
 
K

Kevin Spencer

Can anyone think of a way in which I can pass Application variables back
to

It's important that you grip them over the laces. Put a good spin on them,
and just heave with all your might. Be sure to follow through. From that
point, it's up to the class to catch them.

;-)

Actually, if I understand you correctly, you want to ACCESS application
variables FROM a class, right? Now, in .Net, everything is a class, so I'm
going to have to go out on a limb and guess that what you are referring to
is classes that are not Page classes. In that case, you can access the
Application as System.Web.HttpContext.Current.Application.

--
HTH,
Kevin Spencer
..Net Developer
Microsoft MVP
Neither a follower
nor a lender be.
 
K

Kevin Spencer

I just noticed that your message did mention that your prlbme was with
classes that are "not associated with a web page." So, I guessed correctly,
even though I missed that the first time I read your message. In fact, for
future reference, classes that have direct access to the current HttpContext
are any classes which implement IHttpHandler (such as Page) or IHttpModule.
Other classes must refer to the static "Current" member of
System.Web.HttpContext, and of course, they must be used in that context in
order to access it (such as in a web application or Web Service).

--
HTH,
Kevin Spencer
..Net Developer
Microsoft MVP
Neither a follower
nor a lender be.
 
L

lezmark

Hi,
Just a thought, Can't you pass the application settings as a parameter to
the caller?
As the context is entirely different( I mean the web context and your
processing classes), or in other words ,configuration is different from
processing classes, will you be able to change your code to accept
application settings as parameters from the asp.net page?
--
Arul

Scott Allen said:
Hi Adolf:

As long as the class is working during a web request, it can use
System.Web.HttpContext.Current to tap into the context of the web
request. For example:

HttpContext.Current.Application["foo"] = o;

--
Scott
http://www.OdeToCode.com/blogs/scott/

Suggestions please for strategy to share values across app.

Scenario:

I have an asp.net app that uses some com components along with .net
classes.

Configuration settings for various things are held in an xml file to which
the com has access. The xml file has different nodes for different
instances
(dev,uat1,uat2 etc..) there is a flag attribute to show current instance.

The asp.net app loads the xml in global.asax and extracts a bunch of data
into Application.item variables.

What I can't then do is access the Application variables from any classes
in
the app that are not associated with a web page.

Yes I can put the values into web.config but this present 2 problems
- you need to write a messy section handler with namevalue object to read
any data
- the com can't see the file (well it can but for admin purposes you
shouldn't need to duplicate values - more scope for going wrong)

Can anyone think of a way in which I can pass Application variables back
to
a class?

Thanks
 
S

Scott Allen

Yes, you can always pass those items as parameters. I'd avoid passing
a reference to the entire Application collection as that can be easily
retreived with HttpContext.Current, but if I wanted to decouple my
classes from being used strictly in an asp.net app I'd pass the values
along and avoid HttpContext.Current and referencing
HttpApplicationState. You could always package the parameters into a
Hashtable or pass them individually.
 

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

No members online now.

Forum statistics

Threads
473,995
Messages
2,570,228
Members
46,818
Latest member
SapanaCarpetStudio

Latest Threads

Top