State Management :: Scalability When Session Variables Are Used?
Feb 6, 2011
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?
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?
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?
Session variables are on server side. I need to clear out the server side session variables on browser close on client side. I have used a WebService and ajax call but still i am not getting the session cleared.
I need to refresh my webpage in case of a change in the system time. However I see that my session variables are becoming null when the system time changes. So I cannot perform the refresh action since my webpage requests a login.I am not setting the Session variables to null explicitly anywhere in the code. I can't seem to figure out how they are becoming null.
I have two different IIS applications within the same domain(let us say www.mydomain.com) , both of these applications use the same database instance(same connectionstring), now what I want is that both of applications can see each sessions variables , can SQL Server session state mode helps in this case? Did someone try that before? Is there any other way to share the session variables?