State Management :: Objects In Session Variables Now Causing Slow-downs?
Oct 24, 2010
I've noticed that once I've instantiated 3-4 objects now, my ASPX page is running slower. The response from the server (which is my own PC) is taking longer.
With one or two objects, the performance is same. After I instantiate 3, it slows a little, and 4 just completely wears it down.
I've read this article: [URL]
that says to avoid using session variables especially storing objects into them. Well thats exactly what I'm doing. My object has about 10 methods(~30 lines of code each) and 20 fields.
My question is, if I want to persist object in memory for each user session, how else could I store them on each postback if not in the session variable>? I can't use application variable because thats shared and not thread safe.
Lets say I am doing a shoping cart. I authenticate the user with a session variable.For example:
If(Request.IsAuthenticated) // Here I want to add to the shoping cart. // Can I do the following Session["Cart"] = "Washing Machine"; Now will this Session["Cart"] value which is washing machine here be unique to diff customers?
I've created a whole bunch of rather complex classes and now i'm starting to work on the ASP.net user interface. Basically the user will open 1 page which will be used to load, edit, save an object. The object has many fields and they are often other classes i've created. To create a nice interface i've used popups and used AJAX to reload parts of the page to avoid reloading the whole thing.
My plan was to create the object and save it to the session. Then each time the page is loaded copy the object values to the asp fields and do the reverse when the page has been submitted copying the asp values to the object field then updating the session object.
So the code will go something like:
onload:
if session is not null load from session otherwise create new this.txtID.text = object.id this.txtName.text = object.name etc etc
Is this what you guys would do? or am i over thinking this, seems like a lot of code to load all the object fields each time the page is opened and submitted etc.
Just looking to bounce ideas of off other developers :D
We have a web app running .net 1.1 that users must login to access (uses FormsAuthentication). At one point, the user submits a form that is handled by a separate web app on the same website but in a different directory (running .net 2.0 and not requiring authentication). When the user submits the form and is redirected to this other page they have some options including returning to the previous web app.
We need our users to stay logged in to the first web app so they do not have to log in again when returning. This works fine on 3 out of four computers, but the fourth computer is asked to log in when they hit the return button (by reviewing the active cookies we see that when it returns to the original web app, the FormsAuthentication cookie is missing)
why this cookie would disappear on one machine but not the others? I am going through IE settings now but the machine has the problem in IE and Chrome (not sure if this would be a shared setting) If it is an IE setting is there a way to make this work without requiring the user to change their settings and without switching to cookieless sessions?
Here is the authentication part of web.config
[Code]....
And if it makes a difference, the redirect and form action property use a the full path, would using a relative path likely change anything?
I use some session variables to get the job done(shopping cart, etc) but it is not stable..manytimes I get no items in session object and other times(refreshing the page) I get missing data...I downloaded the entire site code to my local pc and debugged it and run it succesfully without any session data missing...When I run it in the server, I get bad session again: no products in shopping cart or products with missing quantities...
The same website runs smoothly in our production server too....The problem is with our development server...
I have some code in my page load event where I just want to fire once when the user opens the Browser. The only issue is if you open a new tab with the same website the session variable does not reset. Is there a way to reset the session variable when you open a new tab or do you have to take the whole web browser down for it to clear the session variable.
I am working on an asp.net website using C#. The site deals with orders and therefore order lines. I would like to store the order in memory whilst it is being populated (with order lines) and once it gets submitted write it to a database.
The above logic has been implemented, but sometimes when accessing session state or storing a variable in it information gets lost. Take note that the web server is running a dual-core processor. I am also using the in proc session state server.
I tried changing over to using the out proc session state server (asp.net state service), but it requires serialization. Since the order and orderlines are actually linq to sql classes, the entitysets and entityref's fail to serialize.
Does anyone know the reason why session state loses information occasionally and possibly how to eliminate the problem?
I've been building ASP.Net applications for a few years now but most of my work is focused on business apps that'll be used by less than 50 people, running on an Intranet.
Today I had a conversation with a colleague who is thinking of using ASP.Net to build a commercial application that could potentially be used by 1 Million users. He wanted to know about the scalability of ASP.Net apps and how much (or how little) of stateful objects likes Session variables he could use and still keep his app scalable. To this I did not have an answer, which is why I'm turning to the community.
Striving to keep your bias to a minimum, if you were going to build an ASP.Net application for 1 Million users that provided a rich UI experience, what parts of Microsoft's technologies to keep track of state would you avoid or keep to a minimum?
We are working in a web application using Session variables to store the clients ID to operate with them in all app (making orders, reports, etc....) but randomly users get the client ID of another user in any moment using the application.
I have tried to solve it in a first step adding to system.web section in the web.config file this:
[Code]....
ASP.NET State Service is running in server normally, It began run just before this last change, but we have not solved the problem either with this solution.
The server is Windows Server 2003 Standard Edition SP2 32bits running IIS 6.0, and the application is made with Framework 2.0
There are a couple of user's experiences session variable loss after they've clicked a confirm button and their information is email via a relay hosting server. Below, I commented exactly where the session variables get lost.
What could be causing the session variable loss? So far, this only happens to a few users.
How can I retain the value of variables that I fill from CodeBehind throughout the session? (C#). For example, I do a LINQ query from the log in "on-Click" button event. The query produces a bunch of data about the user that I want to access throughout the session on additional ASP pages. I know that I can pass a large query string but I suspect that there is a better way. Here's a specific...
from the db function I product: COS=2 (class of service). Throughout the session, I test for COS and display appropriate pages. Assume that the LINQ query is accomplished in the CodeBehind attached to the "loginButton" within the "login.aspx" page.
I am using Session ID Manager in all the pages of the website, but I am losing session variables in between the pages. what should I do to save the values of session variables. Anoop
We are in the process of refactoring from cf to .net, so, I am working on the Login page and converting it from cf to .net. So, when I am autheticated and enter into our website, I need to redirect it to a cfm page (just temporary, since we will be refactoring that also eventually).
So, I am autheticated (using CustomMembership Provider model for sql server) and then when I redirect to the cfm, the app.cfm should validate the .net session variables. Here is where i am stuck:
I have the .net session variables in the aspx side:something like Session["UserId"].ToString() = Value from a login txt box (also authenticated against data in the database)
Session["UserName"].ToString() = Value from the db corresponding to the User Name entered in the text box.
So, now I have all the session variables in the .net side. Now, how do I retreive these .net session in the cf side? Any small peice of code to retrive the asp.net session variable in the application.cfm side would be great.
if using session variables to store and retrieve information is a bad practice? Let me give you some background:
I am developing a site for a friend of mine, and his site is hosted by Go-Daddy. My feeling is that Go-Daddy is not the best place to host a .NET site, but it is what it is.
After the first version of the site was published and people started using it, users immediately started having session time-out problems and null exceptions when referencing session variables. I researched everything I could and tried everything I could think to do, but I just could not correct the issue.
Then, while doing some testing, I discovered that users weren't individually timing-out and losing their session information, but, rather, all users where timing out at exactly the same time, regardless of how long they had been logged in or what they were doing. So, for whatever reason, the server was just dumping all sessions at random intervals.
At this point I needed to move on with the project so I added a number of cookies to replace the session variables, and everything began working properly.
in a hosted environment, should I avoid using session variables? Is it as problamatic as my research and experience would indicate, or is this simply due to the fact that I am working with a poor hosting company in Go-Daddy?
I am using Windows xp/ .net 2.0 / vs 2005 for development environment. My session data (not all session data) are getting lost when I try to navigate between pages through window.open but the same is working perfectly in proc mode but in state server / sql server mode I am facing the problem.
1) As per my understanding, Session variables like HashTable and another variable in Session must be initialized. The best place as per my knowledge is Sesson_Start Event. But at some post its written that we must do that in Application_Start. I think it is not true, as that could lead to problems with different user sessions. Reference is this [URL] Let me know about the concept.
2) Storing variables like string, boolean and etc in Session is slower than storing objects in Session like HashTable, Arrays etc.. becuase they dont require boxing and unboxing. Is that true? Reference. [URL]
I created a virtual directory for new .ASPX pages added to existing ASP website. I found that the new .ASPX pages are not able to access the session variables created by the existing .ASP pages (outside the virtual directory).
I have a web application running on IIS 7 on a Windows 7 machine. The app pool is configured for .Net 4, 32 bit enabled, Integrated Pipeline.
Everything seems to be fine with the app until I first create a session variable in one of my asmx pages.
Once I've created the session variable the handling of subsequent http requests sometimes takes upwards of 30 after the browser has posted to my asmx page before the function is actually invoked. I've been looking all over my configuration settings and searching the web and still have no idea what could be going wrong here.
The method that sets the session variable looks something like this:
I have 4 webpages. In those pages, i am using session variables,viewstates,cookies. I am passing session variables,viewstates to different pages. Now the problem is sometimes i am getting the old cookie values or session values. I want to clear all these things when i close the browser or if i open a new tab of browser.
Since I changed from statemode"inproc" to stateserver I canīt se changes done to de session vaiable in a thread. I can only see the first value set to the session variable!
I'm using the beta version of Visual Studio 2010. I'm running my ASP.NET 4.0 website through the debugger. Whenever there is a page load (e.g. clicking on a link, a postback) the session is ended and a new session is created. This wipes out all the session variables and makes debugging impossible. How to get session variables to persist across page loads?
Is this problem unique to running ASP.NET in a test environment or unique to the beta 2 version of VS 2010?
Just wondering whether or not Session Variables that are declared and set while in a HTTP session will continue to exist if the users session moves to HTTPS?