.net - Remove A Cache Entry Which Didn't Put There?
Sep 12, 2010
Precondition: There's a web application that leverages ASP.NET security model. There's also an Active Directory (AD) integration component. It provides AD users and roles as if those are application's own users and roles. The relations like "is in role" between AD user and AD role are stored in AD domain, of course, but are cached by the web application.
Problem: Let's say AD user1 is a member of AD role1. When web application starts, it caches this relation. Now if the AD administrator removes user1 from role1 using AD console, the application doesn't know about this change - the cache entry is kept. This becomes a security hole because the role1 might have permissions the user1 should no longer have.
There are two сcontrary opinions how to solve this:
"Listen" to AD changes and trigger cache entry removal once the operation is detected on AD server - because we are responsible for correct AD component functioning Leave the cache untouched - because we didn't put the entry there and should not remove it either
I am looking for a Cache filter which can be removed when certain action is performed.
Suppose,I have Index action which is loading records and cached with a filter for a minute.As long as I am calling Index the action must be cached and no trip to db.
Once I create a record in Create action than it should remove the cache a load the records from DB.I have found one in Ninject web example which is like below. I am looking for same solution.
[Cache(0, 0, 5, 0)] public ActionResult Index() { [code]...
i am using Jcrop to give users the option to crop there images, i have hit a small caching problem.
if you open an image which is already on the server and crop it. my jcrop works and crops the image fine but when i reload the image the old version is displayed. i have this inside an update panel.
so is there a way of removing the browsers cache before i reload the image?
I have an ASP.NET website in which the user has the Login/Logout functionality. There are some pages which are viewable only if the user is logged in. Now, after the user signs out, I noticed that the user is still able to see this restricted page on pressing the back button. I want to create the functionality such that once the user signs out, the page should not be viewable. How can that be done?
P.S I am not using built in Login controls in ASP.NET
U are caching a list of items, then Add or update or delete method called. Approach 1)
A- Do the data change at the database. If success do B, C B- Remove the entire list from the Cache. C- Re-Cache the list on first read.
Approach 2)
A- Do the data change at the database, If success do B B- Do the same change at the cached items, and save more time.
Approach(2) probably will cause nasty difficult to spot bugs, because the data come from BLL and placed directly into cache, One can't assume no bugs will happen at the sproc, I am not worry about database runtime errors, runtime errors will show up, but I am worry about invalid data, or miss calculation. Can I proceed with approach (2) with caution? Is there a "best practice" principle which suggest not doing approach(2)?
We have a wfc layer that wraps the business classes and database access and use a client that lives on the database layer. Amongst our group we are attempting to form standards. Some want to have the client call the web method and pass the page they are requesting and the page size. Pass that to the database and then page in SQL Server use RowNum.Some want to cache the full list of objects in http cache on the service tier and page in memory. They concern here is memory use on the server.
Which would be best for a medium number of users with potentially large number of records to manage (say 30K) Is it better to cache them all in memory and work from there or page at the database as the application scales?
Since I don't want my sessions to be removed unless the session has been abandoned either via code or Session Timeout...For eviction, I would think "None" and for expireable, I would think False.I have tested and calling Session.Abandon does remove the object from the cache. I have also tested to see if by extending my session, the session object in cache is also extended. This does seem to work the "correct" way.
We have a data driven ASP.NET website which has been written using the standard pattern for data caching (adapted here from MSDN):
public DataTable GetData() { string key = "DataTable"; object item = Cache[key] as DataTable;
[code]...
The trouble with this is that the call to GetDataFromSQL() is expensive and the use of the site is fairly high. So every five minutes, when the cache drops, the site becomes very 'sticky' while a lot of requests are waiting for the new data to be retrieved.
What we really want to happen is for the old data to remain current while new data is periodically reloaded in the background. (The fact that someone might therefore see data that is six minutes old isn't a big issue - the data isn't that time sensitive). This is something that I can write myself, but it would be useful to know if any alternative caching engines (I know names like Velocity, memcache) support this kind of scenario. Or am I missing some obvious trick with the standard ASP.NET data cache?
we have so many parameters that the cache key is several hundred characters long. is there a limit to the length of these cache keys? Internally, it is using a dictionary, so theoretically the lookup time should be constant. However, I wonder if we have potential to run into some performance/memory problem.
I have use Nhibernate in my MVC Project by me known, Nhibernate have cache on Session and Object. now, I want use HttpContext.Current.Cache (system.web) for cache data something in project. my code same that have problem, haven't it. and that's right or wrong.
I've got a web application that runs of a state server. It looks like soon it may need to distributed and there will be two web servers behind a load balancer.
This works great for session state but my next challenge is Cache
My application leverages heavily of cache. I understand ASP.Net 4.0 will be offering more here but nothing much has been said about the how too.
There are two challenges that I face
1). Each webserver will have its own copy of cache whereas it would be more efficient to put this to a third server the same as session state is put to state server.
2). The real challenge is keeping cache in sync if a simple dataset derived from the database is changed my code dumps that cache item and reloads the cache. That's all well on one webserver but webserver number two wont know to drop that particular cache item and reload it. This could cause some unexpected problems in the application.
For scenario number 2 I could attempt to do some smart coding so server number two knows to dump the cache and reload it.
My guess is someone else has already been here before and there's probably a better implementation approach rather than writing extra code.
Does anyone know how I could achieve the goal of keeping Cache in sync between multiple webservers or even better farm Cache management to another server?
I need to enable caching in my asp.net application, but I do not want to use the webserver's memory for holding cache objects. If I add the page directive for output caching will the page be stored in the asp.net cache object?
I want to be able to maintain certain objects between application restarts.
To do that, I want to write specific cached items out to disk in Global.asax Application_End() function and re-load them back on Application_Start().
I currently have a cache helper class, which uses the following method to return the cached value:
return HttpContext.Current.Cache[key];
Problem: during Application_End(), HttpContext.Current is null since there is no web request (it's an automated cleanup procedure) - therefore, I cannot access .Cache[] to retrieve any of the items to save to disk.
Question: how can I access the cache items during Application_End()?
Im building a image gallery which reads file from disk, create thumbnails on the fly and present them to the user. This works good, except the processing takes a bit time.
I then decided to cache the processed images using the ASP .NET Application Cache. When a image is processed I add the byte[] stream to the cache. As far as I know this is beeing saved into the system memory. And this is working perfect, the loading of the page is much faster.
My question is if there are thousands of images which gets cached in the Application Cache, will that affect the server performance in any way?
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
If Request.ServerVariables("SERVER_PORT") = 80 Then Dim strSecureURL As String [code]....
The validation load in this page worked on the first click of btnDonation, if I don't change anything and click the btnDonation again, it automatically go to my confirm page. Instead, I want it to continue to check for requiredFieldsOK(). Note that if I fill in one of the missing required fields, the validation will work.
My question is: How can I continue to check for requiredFieldsOK() even if user didn't fill out any additional information?
I haven't worked on web applications in eight months or so (last contract work was WinForms), and I am trying to remember what I knew about custom controls. My issue is that I am replacing a developer who is gone and there isn't much doc or knowledge on-site anymore regarding at what point his code was left off. So I am figuring it out. We work with 3rd-party software API's. In an extension (a DLL), I am able to test what 3rd-party page is being navigated to and navigate to my own page instead. Let's call this page UserApproval.aspx when its the 3rd-party page, and UserApproval_mmock.aspx when it's mine (really his - the former developer's). The former developer has a line of code in the _mmock page, like so:<%@ Register TagPrefix="mockCustomCtl" TagName="TestControl" Src="~/Folder-1/Controls/MyCustomControl.ascx" %>Nowhere else in the code do I see a reference to mockCustomCtl. Shouldn't I, if the page is indeed rendering this control? Could that be where he left off - he created his own replacement page, created the custom control (I do have the source to MyCustomControl.ascx), but didn't actually put the custom control *on* the page?
I'm not sure where went wrong, from the beginning, my gridview didn't reflect what I choose in AutoFormat style. I tried to set one of the styles and Apply and OK, the grid rows seems to reflect but header row color remains the same. My gridview has pre-defined columns and I bind it to datatable at code behind. And it is placed inside div tag which is inside a table tag. And this page is a child page inside a master page.