C# - Static Vs Member Field Revisited / Want To Persist A Large Dictionary Of Strings Inside The Memory?
Feb 18, 2011
I need an advice on piece of functionality that I am ought to implement. The scenario is that we haven an HttpHandler which servers to intercept file uploads. In the handler, I need to persist a large dictionary of strings inside the memory. The dictionary might be as large as 100 entries. I am wondering whether it is safe to store that in a static variable, so that it is not initialized every time instance of the handler is created (there will be a lot of instance for sure). In general, what is the approach in such scenarios. Is it a generally better idea to use static fields, to persist data that will not be changed?
I have a class that maintains a static dictionary of cached lookup results from my domain controller - users' given names and e-mails.My code looks something like:
private static Dictionary<string, string> emailCache = new Dictionary<string, string>(); protected string GetUserEmail(string accountName) { if (emailCache.ContainsKey(accountName)) { return(emailCache[accountName]); } lock(/* something */) { if (emailCache.ContainsKey(accountName)) [code]...
I have a static class that holds a dictionary of objects. I have multiple threads that access this dictionary and create objects on it that are specific to that thread. How and when can I remove entries from the dictionary when a thread is "done"?
Basically this is a static class for an ASP.NET application that all requests can have "isolated objects" (that are related to the current thread) created in the dictionary. But, I don't really want to be tied to ASP.NET.
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 have a static class I'm using as my data layer in my website. In this class, I have string arrays that store queried information that I can access later. Here's the part of my class and the method in question:
public static class data_layer { ivate static string[] items; private static string[] description; //will return description for an item id. if no item id is found, null is returned public static string getDesc(string key) [code]....
I have a problem with large respones and IIS7, the server runs out of memory. I've written the test code below that works pretty much like my real code... When i start to download the file i can se the memory usage rise until it hits 100% and Firefox complaints about lost connection to server, looks like IIS7 does not release cache or something.. Works in IIS6 by the way
I have an Entity class which has a Dictionary of fields called Data. Now I want to sort Entities by a field in Data. I was able to verify the Linq expression for using fields in a dictionary as e.Data["UserId"] as this seemed to work perfectly when I used LINQ to Objects. e.g. Entities.OrderBy(e => e.Data["UserId"])
However this same expression does not generate the correct NHibernate criteria and errors out finally with a NullReferenceException for propertyName at Hibernate.Loader.Criteria.CriteriaQueryTranslator.GetEntityName(ICriteria subcriteria, String propertyName)in CriteriaQueryTranslator.cs: line 541.
On debugging through NHibernate code, I figured that NHibernate.Linq.Visitors.MemberNameVisitor.GetMemberName(ICriteria rootCriteria, Expression expr) returns a null string in place of the field name after visiting expr using its visitor. This seems to be the cause of grief. I am using an older version of NHibernate (2.1). Are there any limitations in the NHibernate Linq visitor I should be aware of?
I'm having difficulty trying to create and persist controls inside of a gridview during postbacks. I have an unbound Datagrid control which is created with x number of rows and y number of columns during the Page_Load event.
[Code]....
During the RowDataBound event of the GridView, I create a placeholder control and then I create a label and add the label to the placeholder
[Code]....
On the first page load when navigating to the page, the grid dispays perfectly and the labels are created with no issues and I can see the "1" in every single cell of the Gridview. I basically need the labels in the cells to store an ID when the cell is clicked (the click event works with no issues, wired it all up with javascript) and Since the Cells to not exist prior to "Building the matrix" method, How can I persist the Label controls inside of the tablecells between postbacks so I can assign and read values from them.
I've read a number of online posts from 4guys from rolla and they demonstrate how to persist a handful of controls dynamically created in a staticly defined PlaceHolder conrol outside of the complicated setup of the gridview and have failed at adapting them. The golden rule seems to be to 'recreate' the controls during Page_PreInit during the postback, but I can't seem to get it working.
Say I have a table Comments with these columns: Id, Comment, Category, CreatedDate, CommenterIdI want to get the top 5 categories from the Comments table (based on the count of each category in that table). How can I do this in linq, to return either List or IQueryable?
public sealed class IoC { private static readonly IDependencyResolver resolver = Service.Get("IDependencyResolver") as IDependencyResolver; static IoC() { } private IoC()
I've got an ASP.NET web app that is starting to show some very strange behavior. Here's some example code:
// in Bar.cs public class Bar { public static Baz baz = Something.Step2(); } // in Global.asax public void Application_Start(...) { Something.Step1(); }
The short version of the story is this: On some machines, Something.Step2 is executed before Something.Step1 and is throwing an unhandleable exception. On other machines, Step1 correctly executes before Step2. Global.asax and all the objects it uses do not refer to Bar at all.
When are static fields supposed to execute in relation to other programming elements? Why would two machines (both Win7 64-bit, both with .NET 4.0, same IIS version, etc) execute things in different orders? The order is consistent on each machine too. On my machine, it always executes Step2 before Step1, but on my coworker's machine it always executes Step1 before Step2.Update I've found the root cause why my static field is being accessed. Class "Bar" from my example is actually a custom authentication module, and is referenced in web.config as the Authentication handler under System.webServer. If I remove that line from web.config, my system calls Step1 first and never calls Step2 at all. My question changes subtly to: "Why does web.config cause my static initializers to fire, and why does it cause them to fire before Application_Start executes?"
I have two member roles at my project: 1.) Administrator 2.) Member
From the toolbox in Visual Studio 2008, I have dragged and dropped the create user wizard into the stage. I aim that a guest can register itself and automatically join the "member" role. Not the role "administrator". How can I do that?
I have a web performance test which contains a request whose response is greater than 5MB, and the Extract Hidden Fields rule fails to find (necessary and required!) hidden fields in the response. Response header contains
HTTP/1.1 200 OK Transfer-Encoding : chunked Vary : Accept-Encoding, User-Agent Cache-Control : private Content-Type : text/plain; charset=utf-8 Date : Sat, 19 Feb 2011 15:24:38 GMT Server : Microsoft-IIS/6.0 X-AspNet-Version : 2.0.50727 X-Powered-By : ASP.NET
Other than that and the response size, there is nothing remarkable about this scenario. In fact, this same test succeeds when a smaller data set is used. I suspect the Web Performance Test framework is having issues parsing the "chunked" encoding or sheer volume of data. Ahem, how can I obtain these required hidden fields from my response? ie resolutions, work arounds, converting auto-extraction to manual, etc.
public class WebModel { public List<ArticleModel> Articles { get; set; } } public class ArticleModel { public int ID { get; set; } public double ValueParam { get; set; } }
Then I have the controller with the two actions:
[Authorize] public ActionResult Index() { WebModel model = new WebModel(); ModelConverter.ConvertToModel(model, controller); return View(model); } [Authorize] [HttpPost] [ValidateInput(false)] public ActionResult Index(WebModel model, string saveButton) { ModelValidation.ValidateWebModel(model, ModelState); if (ModelState.IsValid) { return RedirectToAction("Create", "Article"); } ModelConverter.ConvertToModel(model, controller); return View(model); }
If I press the submit button, I get to the second action method in the controller (the one with the HttpPost attribute). In this action, the object model itself is not null, but the "Articles" list inside is null.
I am calling function in codebehind from javascript using webservice.
function GetAdmissionType() { InitComponents(); var type=""; type=document.getElementById(dlAdmissionType.id).value; document.getElementById(hdnAdmissionType.id).value=document.getElementById(dlAdmissionType.id).value; else if(type=="2").........
i am not getting controls in aspx page in SaveInfo.
I'm using jQuery and setInterval method in my asp.net web application.
I call the webservice every 5 seconds in order to check for DB changes. When i see a change, i want to change the photo of the linkButton that located on the master page, but i can to that due to static constrains.
An object reference is required for the non-static field, method, or property 'System.Web.UI.Page.Master.get'
my c# code is:
[WebMethod()] public static bool checkDBChange(string userId) { DBConnection dbConnection = new DBConnection(); if (dbConnection.isChanged(userId)) { ((Site1)Master).SetImageUrl = "~/Icons/a.ico"; } return false; }
The SetImageUrl is a setter in my master page that sets the new url to the linkButton. How I can implement it?
It happens frequently when I try to copy & paste code inside VS 2010 with following message:
insufficient available memory to meet the expected demands of an operation at this time, possibly due to virtual address space fragmentation. Please try later.
and I check the memory usage with taskmanager on my computer. It is fine.
In order fix it, I need to close VS 2010 and restart again.
I'm using ASP .NET C# 3.5. I have a multiline textbox on my web form that allows for the input of up to 5,000 characters from the end-user. This text is a basic description of a training course. I need to display it out in a clearly formatted way. For example, I need there to be bullets and bold text.
What I did was I chose certain (not often used) characters and then used the .Replace method when displaying the text in an <asp:Label>. If the text in the database contains the character '~' then I replace that with a line break <br />. If it contains '`' I replace that with <b> and if it contains '^' I replace that with </b>.
Is there a better way of doing this? It is working properly, and I'm displaying the text properly, but I know the end-user is going to hate typing text like this for formatting. I do want this all to stay database driven as well
I used static function because the function is called by pagemethods but i have to find a control in masterpage, findcontrol method do not work in static functions, is there any solution for this problem?