Working With Static Variables / Store The User Specific Information In Static Variables?
Mar 5, 2011
whats the exact use of static variables in overall programming in .net and for asp.net...
Recently i went for the interview where interviewer asked me 2 question which i was not sure for the same..
whats the use of session object, i said sessions are the server side object, they are used when you want to store user specific data at server side, then he asked what if i want to use static variables for the same, i was mum, can anyone tell me how asp.net will behave if i store the user specific information in static variables.If i use cookies which are the best option to store the data at client side (not sensitive one), but what if user has disabled cookies on his machine, will my application would crash.
I know what they are and how they are used but i am not sure about their feasibility. Their use is always advised to be avoided. can some one explain me when they should be used and when not?
Aif i have a choice between static veriable and session for just storing an integer which one of these should i prefer??
I have some WCF services. These services run in ASP.NET. I want these services to be able to access a static variable. My problem is, I'm not sure where the appropriate server level storage mechanism is. I don't want to use the database because of speed. But, I want the static variables to stay in memory as long as possible. In fact, I'd like it to stay until I restart my server if it all possible.
i am developing a website in asp.net i have created a class "Utility" in App_Code Folder this class contains a static object of another class(LoginInfo) as described below:
[Code]....
This LoginInfo Class is my business object which only contains 2 properties UserID and UserName Now what i am doing on my login page, after user authentication i am setting these properties with current logged in UserId and UserName
[Code]....
I am using this CurrentUser object on my webpage to get userid and username. It works fine, but after few minutes my CurrentUser.UserID and CurrentUser.UserName is set to blank string. I am not able to figure out what is the problem. may be due to asp.net recycles.
If I declare a static field in a type instantiated within an ASP.NET application, hosted within IIS, is the same variable (i.e. same memory location) used by all of the worker threads used by IIS, opening up concurrency issues?
Possible Duplicate: Where are static variables stored in asp.net aspx page Hi can someone please tell me where the static variables are stored in asp.net aspx page.Is it in the view state? If so I guess you wouldn't want to stored big complex objects?
public static void TryOut(int intOne, int intTwo, string strone, string strtwo){....}
And after I created dll, I will use it like that;
TryOut(1,3,"bla bla bla", "bla bla bla"); But I want the last variable to be optional. I mean this method could be used like that; TryOut(1,3,"bla bla bla", "bla bla bla"); And Also like that TryOut(1,3,"bla bla bla");
I know it is possibel but how I could do that I have no idea !
For reasons I would rather not discuss, I need to create a custom authentication system for my app. I was just reviewing the system and am having some doubts if my solution is thread safe. My goal was to create a solution that would allow my app to authenticate a user one time and that users authentication info would be shared by all master pages, pages, classes, user controls, etc that are used. (But not share the same info between users) Here is my setup: PageHttpModule.cs - this is added to the web.config as a httpModule.
public class PageHttpModule : IHttpModule { public void Init(HttpApplication app) { app.AuthenticateRequest += new EventHandler(OnAuthenticateRequest); } public void OnAuthenticateRequest(Object s, EventArgs e) { CurrentUser.Initialize(); } public void Dispose() { } } CurrentUser.cs public static class CurrentUser { public static bool IsAuthenticated { get; private set; } public static string Email {get; set;} public static string RealName {get; set; public static string UserId {get; set;} public static void Initialize() { CurrentUser.AuthenticateUser(); } Note: this is a scaled down version of my authentication code. public static void AuthenticateUser() { UserAuthentication user = new UserAuthentication(); user.AuthenticateUser(); if (user.IsAuthenticated) { CurrentUser.IsAuthenticated = true; CurrentUser.UserId = user.UserId; CurrentUser.Email = user.Email; CurrentUser.RealName = user.RealName; } } } UserAuthentication.cs public class UserAuthentication { public string Email { get; set; } public string RealName { get; set; } public string UserId { get; set; } public bool IsAuthenticated { get; private set; } public UserAuthentication() { IsAuthenticated = false; Email = String.Empty; RealName = String.Empty; UserId = String.Empty; } public void AuthenticateUser() { //do some logic here.. if the user is ok then IsAuthenticated = true Email = address from db UserId = userid from db; Realname = name from db; } }
I have tested between 3 different browsers and it seems to work fine, but I am still learning and don't want to make a huge mistake. If my logic is totally wrong, then how should I do it so I dont have to put user lookups on every page directly?
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
im developing a silverlight project using silverlight 3, vs2008 and linq2sql. when projects starts, im storing all the data from database into some static list variables. so when ever i need data, im reading it from those static list variables. all i want to know is, is it good to store data in static list variables and use it when ever necessary or is it good to get data directly from DataClassesDataContext object like db.mytable. which is the rite and fastest way or retrieving data. i mean which will use less connections to database?
So I started working on my first asp.net application that involves logging in and databases, and soon after i started messing around with a static class. I "discovered" that if you make a variable static, all sessions share that variable (I for some reason was originally assuming that each session had its own copy of that "static" class). Anyway, after discovering this I thought to myself "how could this possibly be useful to me" and thought that itmight be a good idea to make a single static database connection for all of the sessions, rather than storing that as a session variable for each session. Does anybody know what would be the pros and cons of this approach?
I'm coding a business layer for an ASP.NET application. I've created database methods in my BLL as static. I've created public static Func variables to be compiled and used in several different methods, like this:
namespace BLL public class User { public static Func<Context, variable, result> selectUser; private static void CompileQuery() { if(selectUser == null) { selectUser = CompiledQuery.Compile...... } } public static UserClass Select(int id) { CompileQuery(); //uses selectUser } public static SomethingElse DoSomethingElse() { CompileQuery(); //also uses selectUser } }
It'll be used in ASP.NET layer like this: using BLL;
private void AddUser() { UserClass user = User.Select(id); }
My question is, since static variables are not thread-safe, is this a bad design decision? I'm thinking of either implementing a locking mechanism, which makes me think if it'd slow down the application, or using instantiated class approach which makes me wonder if query compiling would be beneficial.
I have an asp.net application with c# language. I have a common class which maintain the constants and static variables and fields. I also have a login page. If the user logs in successful I set IsLoggedInSuccessfull as a static boolean variable in common class.
My question is: Will this only work for a specific user session or for overall application ?
Edited: Based on some answers I got another question here.
let say i am using the Static method as Authenticate(User objUser). intention is to call this method when user clicked log in button. where on login button I am let say prepare the User object with certain parameters required for login, then passing to this method. what would be the impact there? let say I have single server for now (no server farm or garden). then there will be the single application level method to authenticate the user, right? and say 10000 user are going to logging in to this site/application then how authenticate() method comes in behaves ? will CLR automatically manage threading there ?
I have a private static field in my Controller class in an MVC web application.
I have a static method in that controller that assigns some value to that static field, I want to apply lock on that static field until some other instance method in the controller uses the value stored in the static field and then releases it.
DETAILS:
I have a controller named BaseController having a static ClientId field as follows and two methods as follows:-
public static string ClientId = ""; static void OnClientConnected(string clientId, ref Dictionary<string, object> list) { list.Add("a", "b"); // I want the ClientId to be locked here, so that it can not be accessed by other requests coming to the server and wait for ClientId to be released:- BaseController.clientId = clientId; } public ActionResult Handler() { if (something) { // use the static ClientId here } // Release the ClientId here, so it can now be used by other web requests coming to the server. return View(); }
I did some research after posting. All I found was simple examples for no-layer architectures, like connecting to a database from your aspx page, so, in a corporate environment, it is unnaceptable.
I need to call a server-side method (using ASP.NET Ajax) in a 3-layer architecture.
For example, my Default.aspx contains a method LoadProducts().
[Code]....
[Code]....
This cannot change. There is no way to convert Business and Data layers to static.
How can I call the LoadProducts() method using ASP.NET Ajax?
i am trying to collect 2 variables from one hyperlink, and use those variables in the page_load to set as session. but i don't know how to collect those 2 variables
i would like to collect '#FF0000','#FFE4E1' or direct set '#FF0000','#FFE4E1' to string then send to pageload, how can i do this by only clicking on it ?
so I see these opinions/tutorials about serving static content to support views, from files that co-reside in directories with those views:http://forums.asp.net/p/1258895/2347379.aspx#2347379http://haacked.com/archive/2008/06/25/aspnetmvc-block-view-access.aspxIn the second article, Phil says view-adjacent static content was default-enabled at the time (over a year ago). Unfortunately, though, I reference:
[Code]....
and by default ASP.NET is trying to find it adjacent to my view, which (voila!) is disabled by default. Grr. :)What is the out-of-box IDE-assisted way to reference view-specific static content that doesn't require hardcoding directory tree structures into my path, and also doesn't require ALL of my assets to be in a single folder?Or, if I do it the "unpure" way like I'll probably do if I don't get other ideas (by modifying /Views/Web.Config HttpFileNotFoundHandler), should I block anything unsafe besides .ASCX, .ASPX, and .MASTER that is likely to show up in my views folder?
I am currently working on asp.net 3.5 with C#. In our application Link buttons are used in Grid to redirect page. means when user click on link from Home Page it will redirect to Job details and when user click on Job details link grid it will redirect to VehicleDetail page. My problem is how to store value on jobDetails page from which page user came. without using Session , Static variable when page is redirect.
This is my first time working on a secure website. It's for a pet project I have.
For security purposes, where is it best to store information like SQL connection strings, database encryption keys, etc? Is it better to use web.config, store them in a class that accesses a database (like dataBaseHelper.cs or something), or somewhere else?
I intend to obtain an SSL cert as well. When communicating with the database, should I always use the secure connection?
If for example you have a function Public shared function GetStockByID(StockID as Guid) as Stock Is that function common to all current users of your application? Or is the shared function only specific to the current user and shared in the context of ONLY that current user? So more specifically my question is this, besides database concurrency issues such as table locking do I need to concern myself with threading issues in shared functions in an ASP.Net application?In my head; let's say my application namespace is MyTestApplicationNamespace. Everytime a new user connects to my site a new instance of the MyTestApplicationNamespace is created and therefore all shared functions are common to that instance and user but NOT common across multiple users. Is this correct?
I have this code in javascript: var x = e.mapX; It gets the X-coordinate of a map. What I want to do is that I want to store this into a c# variable. I have a class named Test with an integer property X. I want to store var x into X. In the codebehind, I have this on the Page_Load: Test test = new Test(); Then I am trying this on the javascript code: var x = e.mapX;