C# - Caching Of WebConfigurationManager.AppSettings - Read From Disk Each Time?
Nov 28, 2010
I have a lot of requests that read my Web Config file (eg. variable = WebConfigurationManager.AppSettings["BLAH"]). I am wondering... Do WebConfigurationManager.AppSettings read from disk each time, or is it cached in memory. If it's read from disk each time then I guess I will need to move the variable to a static variable so as to improve my app performance...
I have a css file which I want to read from disk and in that content I want to find and replace all linebreaks (do I look for vbCrlf or ...?)
Public Shared Function GetFileContents(ByVal FullFilename As String) As String Dim filecontents As String = "" If File.Exists(FullFilename) Then Dim objStreamReader As StreamReader objStreamReader = File.OpenText(FullFilename) filecontents = objStreamReader.ReadToEnd() objStreamReader.Close() End If Return filecontents End Function
So in the returned variable "filecontents" I want to find and replace any linebreaks.
I'm using ASP.NET for file uploads, and I'm hitting a bit of a snag in that data sent by the client as multipart form data is read straight into RAM.
Obviously, this means maximum file upload size is limited to the available RAM on the machine, and even then is much smaller as soon as you have multiple simultaneous uploads.
Is it possible to get ASP.NET to write the data to a temporary file on the hard drive as it is recieved rather than reading into RAM?
i have stored settings in the AppSettings section of the web.config file.
I'm trying to access these settings via System.Configuration.ConfigurationSettings.AppSettings, but the AppSettingsCollection is empty. So I can't access this settings.
The strange thing is that this is working on my development machine, but is failing on the production machine. Previous versions of the web application have also worked on the production machine. I'm not aware of any modifications that could couse this.
I have also tried using ConfigurationManager and WebConfigurationManager without success.
ConfigurationManager.AppSettings["key1"]; ApplicationSettings/ Properties (autogenerated by using the 'properties'-tab in the project) Look in web.config <applicationSettings> <Projectname.Properties.Settings> <setting name="Testenvironment" serializeAs="String"> <value>True</value> </setting> </Projectname.Properties.Settings> </applicationSettings>
Usage:
Properties.Settings.Default.Testenvironment
So, what the difference between these two storage possibilities of settings in the web.config? As far as I can see, a downside of the appSettings is that you have modify the web.config yourself and the appSettings are not strong tiped, where as the applicationSettings are. Both are replaceable with in a web deployment project.As far as I am concerned, there is no use for appSettings. Am I missing something here? Which is the historically seen older one?
I am using page caching in one form they retrive some rows from data base for example i put caching time to 5 minutes, in between 5 min suppose the data has modified in server then it should be reflected in my form how to achieve this problem
Compiler Error Message: CS0118: 'Configuration' is a 'namespace' but is used like a 'type' Configuration myWebConfig = WebConfigurationManager.OpenWebConfiguration("~/");
This code has been in place for 5+ months without this issues, only today after adding this sitemap code do I have this issue.
I've been experimenting with caching objects with HttpRuntime.Cache and I was generally under the impression that if I "added" something to the cache like this:
HttpRuntime.Cache.Insert("Test", "This is a test!", null, Cache.NoAbsoluteExpiration, Cache.NoSlidingExpiration, CacheItemPriority.NotRemovable, new CacheItemRemovedCallback(FileChanged));
that the "NotRemovable" and "NoExpiration" flags would keep the object in-memory for the duration of the application. But was finding that at the end of certain page requests, the HttpRuntime.Cache would be completely empty!
Tracing thru and setting a breakpoint inside my Callback "FileChanged" I could see that indeed something was "removing" my object (and every other object in the cache), but I couldn't figure out why. So eventually, I started disabling other things that I thought might affect this subsystem.
I had been mostly retrieving data from "web.config" in the AppSettings region, but occasionally writing back to AppSettings and saving the changes using the above command. I knew from reading that the "web.config" is cached, but saving my changes back to it shouldn't flush all of HttpRuntime.Cache, right?
EDIT:
I've made this super reproducible if wants to try this on their own machine. (I'm running VS2008 Pro w/ MVC2 targeting .NET 3.5) Just start up a new MVC2 project and paste the following into the HomeController over whatever is already there:
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Mvc; using System.Web.Configuration; using System.Configuration;........
Start-up the app in debug mode. Click on the "About" link. This loads a string into the Cache. Click on the "Home" link. String is pulled from the Cache and stuck in ViewMessage dictionary. Some key/value pair is written to web.config and saved. String from cache should appear on the Home page. Click on the "Home" link again. String should be pulled from the cache, but it's not. Stop program. Comment out the 3 lines that start with "Config". Restart the program. Try steps 1 thru 4 again. Notice how the HttpRuntime.Cache has not been emptied.
I am trying to get sections from specific .config file such like "my.config". WebConfigurationManager.OpenWebConfiguration can get the web.config in specific path. Maybe WebConfigurationManager.OpenMappedWebConfiguration can reach my purpose
I have a page with a number of user controls, In one of my user controls I have a button event. I turn on output cache for the user control that has the button and vary by control using the ID property of a hidden field control in the user control. whenever I turn on the output cache my button event doesn't fire.
I have 3 drop down list. 1 is for hours; 1 is for minute; 1 is for AM or PM. I want to read the time in from the database and set the drop down list for the users so they can make updates if need be. I tried ddhour.selectedindex = 1. Can I do this in asp??
Using: Visual web developer 2008; APS.net; VB.net Code; Access db
I have a navigation on my site that retrieves it's links from xml file..Does asp do this everytime a link is clicked on my site..I'm using a master page and the navigation code within the master page is below..So is the xml file opened and read each and every time? any way to cache it or something.below is my code
We can retrieve configuration sections from web.config in the following two ways: Configuration config = WebConfigurationManager.OpenWebConfiguration("/"); AuthenticationSection authSection = (AuthenticationSection) config.GetSection(@"system.web/authentication");
How to read this file and bind data to gridview control.
Right now i am using the following code but it stores whole data in a single column and a single row but i need it in four columns named NC, WC, PRC,ETAC and it's values in respected columns.
how to get data in four columns in Gridview as a tabular format. I am using technologies Visual Studio 2005, ASP.NET 2.0,C#.NET 2.0 and Windows Xp Operating system.
I've set an AppSetting key for my root directory in my web.config file and now I'm going back through my site and changing all link and resources to use this key. Then If the domain ever changes I can just change one line of code and not worry about links breaking. I'm not quite sure however how to use this when I register my header and footer user controls.
What exactly we have in appSettings.config file. My company is using this file in the code to differentiate between Development and Production Environment.
ASP.NET 3.5 Classes throughout our solution referenced ConfigurationManater.AppSettings[""] to get appSettings (from web.config).
We decided we weren't happy with that. Folks were mistyping appSetting key names in code (which compiled fine), and it was cumbersome to track usages. And then there's the duplicated strings throughout the codebase as you reference the same appSettings all over the place.
So, we decided that only one class would be allowed to reference the ConfigurationManager, and the rest of the solution would reference that class when it needed the value of a certain appSetting. ConfigurationManater.AppSettings[""] was static, so we exposed a bunch of static read-only properties off of our single Settings class.
[Code].....
And now we're injecting the ISettings instance as a dependency of the objects which use settings values (the class/interface are in a project that everyone can reference without problems).
In places where we can't inject an existing instance (e.g. Global.asax), we construct a new instance into a static field.
Given all of that, what would you recommend we change, and why?
in one of the application i have been reffering connection string is stored in appsettings! till now i have been storeing the connection in <connectionstring/> element. But, what is the correct way?
So my quetion is, What is the differences between <connectionstring> and <appsettings> in web.config, are there any specific reason why i should or should not be storing connection string in appsettings? Are there any rules / guidlines provided to follow? Or is this completely the choice of the developer?
I am using MS Test to test one of my controller's actions. This method uses the ConfigurationManger to read appSettigns from the web.config. For some reason ConfigurationMangager is not able to find the appsettings.In NUNIT I would just make sure to add a copy of the webconfig file to the test project so that it is available when running in that context. However this is not working for me.