Retrieving Multiple Instances Of The Same Session Variable
Mar 16, 2010
I'm having problems with retrieving multiple instances of a session variable from an InProc session state. In the following code I persist a simple BusinessObject into a session variable on the Page_Load event. On the click of a button I try to retrieve the object back into 2 new declared instances of the same BusinessObject. All works great until I change one of the properties in the first instance, it changes the second instance as well. Is this normal behaviour? I would have thought as these were new instances they wouldn't demonstrate static behaviour?
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
If Not Page.IsPostBack Then
' create a new instance of a business object and set a containg variable
Dim BO As New BusinessObject
BO.SomeVariable = "test"
' persist to inproc session
Session("BO") = BO
Protected Sub btnRetrieveSessionVariable_Click(ByVal sender As Object, ByVal e As EventArgs) Handles btnRetrieveSessionVariable.Click
' retrieve the session variable to a new instance of BusinessObject
Dim BO1 As New BusinessObject
If Not Session("BO") Is Nothing Then BO1 = Session("BO")
' retrieve the session variable to a new instance of BusinessObject...............................
C:ProjectsMattBookQuestExport.aspx(123): Build (web): Literal expressions like '<%$ ConnectionStrings:BookList %>' are not allowed. Use <asp:Literal runat="server" Text="<%$ ConnectionStrings:BookList%>" /> instead. C:ProjectsMattBookQuestExport.aspx(124): Build (web): Literal expressions like '<%$ ConnectionStrings:BookList.ProviderName %>' are not allowed. Use <asp:Literal runat="server" Text="<%$ ConnectionStrings:BookList.ProviderName%>" /> instead. C:ProjectsMattBookQuestExport.aspx(125): Build (web): Literal expressions like '<%$ Session["SelectCommand"] %>' are not allowed. Use <asp:Literal runat="server" Text="<%$ Session["SelectCommand"]%>" /> instead. Without SelectCommand I can compile.
I'm building a web system and various clients will have alternate text for default instances throughout the site. One place is the main nav but there are others. The default may be "project" but they may want to call it "event".I'm heading down the road of calling all the terminology settings (there's a list of about 15) and creating an ArrayList that has the id and either the default or their replacement as the items in the ArrayList.I've also got a enum key list called TermKey that has the defaults and the corresponding ID number.
Throughout the code I'll reference TermKey.Project and then do one of these things that I see as options. 1-pull the text from the session (if the client has set it to "event" then the text "event" will be waiting for the call there)2-pull the text from the database every time I need it.3-pull the client's list each time a page loads.Some thoughts on the impact each way or if there is a best practice for
consider this scenario: a user on my website has a profileID. There are some pluginID's associated with this profileID.
E.g.: User1 might have 2, 3 and 5 plugins associated with his profile.
When the user logs in, I store the profileID of the user in a session variable cod. ON a certain page, the user tries to edit the plugins associated with his profile. So, on that page, I have to retrieve those pluginID's from the DB.
I have applied this code but this fetches only the maximum pluginID from the DB and not all the pluginID's.
I was trying to figure out how can I store multiple pluginID's in this session variable?
I'm creating a shopping basket in ASP.NET using session variables to pass the data from a shopping.aspx page to basket.aspx, currently I have the pages passing the primary key of the product with a gridview on the basket.aspx used to display the data from the database.However this only works for one item at a time, how can I extended the session variable so multiple products can be added, as well as quantities etc?
I have a web application using window authentication. There are a search page and a edit page in the application. In search page, user can enter some search criterias in the textboxes and the search result will be displayed in the gridview by clicking the "Search" button. User can select any row from the gridview and it will take him to the edit page. In the edit page, there is a "Back" button to take the user back to the search page. I use session variables to remember what the search criterias the user entered in the textboxes and what page number the user was in the gridview. So when the user goes back to the search page, the textboxes are pre-populated with the search criterias and the gridview is displayed in the correct page number.
The problem is: If user1 opened one browser window and did a search using search criterias1, then user1 opened a 2nd browser window and did a search using search criterias2. When the user1 went back to the search page from the edit page using the first browser window, all the textboxes and page numbers are from the 2nd browser window, instead of the 1st one. Can anyone explain this problem to me and how to prevent it? It will be helpful too if you can give me some links about the similar problem. I am thinking if the same user logged on two different machines and did the search on each machine, what is the result?
I would like to wrap Session variables in a manner similar to that discussed on CodeProject.
Here is my question: if I have to access CurrentUser multiple times in the same page, would I get a performance improvement by assigning it to a local variable instead of accessing the wrapping property? Or does the HttpSessionState make sure the object is only deserialized once per request, so that subsequent calls in the same http request don't cost any more?
Currently in an .aspx file, I am storing a value (filename that was created in that session) in an hidden text box. When the user clicks on the "Print" labeled Hyperlink control, it opens the file that was stored in the hidden text box control. But when the user goes to different screen (in the same session), I loose the filename value that is stored in the hidden text box control. So I would like to store the filename variable in a session variable. So that if the user leaves this .aspx file and comes back to this .aspx file I can load the value into the hidden text box from the session variable.
What I am trying to figure out is how to use a custom delimiter, single character or set of characters, to wrap a block of text inside a larger body of text and then pull that text out via regex. I have successfully done this with a single instance of wrapped text. If I have multiple instances, it blows up. Here is an example.
This would be my text block with the internally wrapped text:
When my current regex runs on this block, the greedy nature gives me a match starting with my first wrapped block delimeter and ending with my second wrapped block end delimeter. So my regex of @"#Delim(.*)#EndDelim" doesn't work in this instance. I am trying to figure out how to exclude the #EndDelim from my grouping. Simply using ([^#EndDelim]*) doesn't work as it tells regex to ignore the individual characters inside the brackets and not the actual word so this breaks if I have any of those characters inside my wrapped block of text.
I am probably making this harder than it needs to be. Does anyone know of a good solution or how to ignore entire words in regex?
I want to ensure a user isn't editing the same form data in two different browser tabs or windows (of the same web browser instance). The intention is to stop the user from accidentally overwriting their own data as they continue through a very long form process. On the server, ongoing data input through the screens is collected into the Session.
Assume for any browser, all tabs and windows run in the same instance of it (i.e. not each in a separate process). Obviously the browser tabs and windows share the same cookies in this scenario so cookie modification seems out of the question for viable solutions. This is also the reason they are sharing the same session state.
Considering that the form is already created and this is one of the final touches, how can I use ASP.NET, hopefully easily, to oversee this "feature"?
I've been working on an usercontrol with a jquery timer in it. At first I had the jquery within the usercontrol. But when I add 2 of those controls to my page the second usercontrol isn't showing it's data very well.Now I've put the jquery into the mainpage and the usercontrol only uses the id's of the jquery.
<%@ Control Language="C#" AutoEventWireup="true" CodeFile="WebUserControl.ascx.cs" Inherits="WebUserControl" %> <style type="text/css"> [code]...
I have a user control that I place on a page severl times. When I make a selection on a ddl in one one control the SelectedIndexChanged event fires for all the control on the page for that ddl. So I get duplication of an insert that I do. Is there a ay to make sure these events are isolated so this doesn't happen.
I have an ASP.NET page inside of an ASP.NET Master page, and inside the page I have two instances of the same web user control. I have given them different IDs, but when I click a button on the first user control it causes the second user control to do the expected activity and the first one does nothing. Is there something I need to do to make sure that the controls don't get confused?
is there any way to stop share the static variable at multiple users....I need to create a new insatnce of static variables or not accessing the same static variables across multiple who are using the same site.....while googling i found like hisSystem.Threading.Interlocked.Increment(ref MyClass.InstanceCounter); by using can I do....or is there any other way to stop accessing the static variables accross multiple instances of my site......and in my scenario i cannot use rely on session variable also
If more than one person is using the web application, and the web application requires to read a specific file (and in my case, I use StreamReader), I've noticed that the any other instance of the web application would have an exception error when trying to read a file. How do you handle this? And how about when it comes to writing to the same file (if possible)?
I have built a User Control in VB which displays two gridviews and allows a user to select an item in the first gridview and display multiple rows in the second grid with the key of the selected item from the first. The data to be displayed is passed to the User Control as a datatable object via a public property of the User Control.
The user control works perfectly, but to allow the the subs in the codebehind of the User Control to access the data set when the user control is initialised, I have declared them as "Private Shared".
Having got everything to work, I now want to display multiple instances of the same User Control with different datasets.
However, because my data objects are defined as "Private Shared" each instance of the user control is overwriting the data of the others.
I can fix this problem by removing the "Shared" keyword, and have also tried setting them to "Protected" instead but then my variables expire after being set and contain "Nothing" when I get to the "RowCommand" event in the Code Behind.
I'm sure I must be doing something stupid, because surely the whole idea of User Controls is to make reusable code drven by parameters.
I'm having trouble loading (several) multiple instances of crystal's ReportDocuments in memory. Using the following code:
Dim sRPT As New ReportDocument sRPT.Load("PATHTOMY.RPT") Dim sRPTs As New List(Of ReportDocument) For i = 0 To 100 Dim sClone As ReportDocument = sRPT.Clone sClone.Refresh() sRPTs.Add(sClone) Console.WriteLine("RPT Clonado " & i.ToString()) Next
when I reach the 74th instance, the Refresh() call throws a "Report Load failed" exception. Furthermore, the same exception happens even directly calling the .Load(path) method, and affects all ReportDocumetns within the application, regardless the RPT file I'm loading/refreshing.
I'm currently using Crystal XI R2, but testing this code with the v12 assemblies (CR 2008) ended with the same problem. Has anyone ever stumbled with something like this? The reason for all this instances is a report caching for multiple rpt files, per user, and will most likely stay as it is if there is a not-so-nasty workaround for this problema.