![]() |
|
|
|||||||
![]() |
ASP Net - Can't get SqlCacheDependency working correctly |
|
|
Thread Tools | Search this Thread |
|
|
#1 |
|
I'm trying to get sql cache dependency working correctly.
I've got sql server 2005 for my back end. I've don the "ALTER DATABASE dbName SET broker_enable" command. I made sure the user in my connection string has subscripe notifications permission set to grant. But now it seems that the cache is kicking my product out of the cache immediately. I'm using Cache.Insert(prodName, productObject, prodDepenancy) to put stuff into the cache, and when I go to refresh the page Cache[prodName] has reverted to null. Any ideas? Joel Barsotti |
|
|
|
|
#2 |
|
Posts: n/a
|
Hi Joel,
Currently we are looking for some people to help you on this issue, we will update you ASAP. Thanks for your understanding Best regards, Jeffrey Tan Microsoft Online Partner Support Get Secure! - www.microsoft.com/security This posting is provided "as is" with no warranties and confers no rights. Jeffrey Tan[MSFT] |
|
|
|
#3 |
|
Posts: n/a
|
Hi Joel,
Welcome to the MSDN newsgroup. As for the SQL Cache dependency in ASP.NET 2.0, we need to make sure the configuration in the following places are correct: 1. In sqlserver, we need to make sure we've enabled the sql cache through aspnet_regsql.exe tool 2. In ASP.NET web application, ensure that web.config file contains the correct setting for that certain sql cache database/table If the above are all correctly configured, there may have something else cause the problem. And for general throubleshooting, you can try the following means also: a.Use Sql Profiler to monitor the SQL Server database server to see whether there're sql query operations peformed by asp.net sql cache thread... b.Add a RemoveCallBack handler for the cached item to see whether it is called immediately after you add the cache item. In addition, here is the walkthrough article in MSDN on using sql cache dependency in asp.net 2.0, you can also try testing through this to see whether it can work: #Walkthrough: Using ASP.NET Output Caching with SQL Server http://msdn2.microsoft.com/en-us/lib.../e3w8402y.aspx Hope this helps. Regards, Steven Cheng Microsoft Online Support Get Secure! www.microsoft.com/security (This posting is provided "AS IS", with no warranties, and confers no rights.) Steven Cheng[MSFT] |
|
|
|
#4 |
|
Posts: n/a
|
Steven,
It was my understanding that you step 1 and 2 were only needed if you were hooking to a Sql 2000 server and Sql 2005. In order to get mine working all I needed to do was have a user with the right permissions () and then make sure he was hooked to a custom schema and not the dbo schema. Also, I am sure you probably have this, otherwise it would be giving you an error, but make sure to call SqlDependency.Start. void Application_Start(object sender, EventArgs e) { SqlDependency.Start(WebConfigurationManager.Connec tionStrings["MainDB"].ConnectionString); } Here is my code that works for me. Note that I have my application abstracted to multiple layers. Data Layer: public DataReader GetLists(Guid ownerid, ref SqlCacheDependency scd) { //Note that _Command and _Connection are already declared as new SqlCommand and SqlConnection objects respectively by this point. _Command.Parameters.Add(new SqlParameter("@OwnerID", SqlDbType.UniqueIdentifier, 0)); _Command.Parameters["@OwnerID"].Value = ownerid; spname = "[dbo].[usp_ListGetList]"; _Command.Connection = _Connection; _Command.CommandType = CommandType.StoredProcedure; _Command.CommandText = spname; scd = new SqlCacheDependency(_Command); return new DataReader(_Command.ExecuteReader()); } Here is my Business Layer public Dictionary<string, string> LoadDictionary() { Dictionary<string, string> dict = new Dictionary<string, string>(); Cache cache = HttpRuntime.Cache; string cacheKey = "List::" + _OwnerID.ToString(); if (cache[cacheKey] == null) { dict.Add("", "Choose One..."); //Note that SqlBuilder is a custom wrapper class that contains all db calls like the one shown above using (SqlBuilder builder = new SqlBuilder()) { SqlCacheDependency scd = null; using (DataReader reader = builder.GetLists(_OwnerID, ref scd)) { while (reader.Read()) { dict.Add(reader.GetGuid("ItemListID").ToString(), reader.GetString("Description")); } } //insert this into cache with a sql cache dependency. cache.Insert(cacheKey, dict, scd); } } else dict = cache[cacheKey] as Dictionary<string, string>; return dict; } This took me a little while to get working, but I was having permissions issues and not the issue you were having. But anyway I hope this help because once you get this working it is very slick. Chris chris |
|
|
|
#5 |
|
Posts: n/a
|
Any ideas yet?
""Jeffrey Tan[MSFT]"" <> wrote in message news:... > Hi Joel, > > Currently we are looking for some people to help you on this issue, we > will > update you ASAP. Thanks for your understanding > > Best regards, > Jeffrey Tan > Microsoft Online Partner Support > Get Secure! - www.microsoft.com/security > This posting is provided "as is" with no warranties and confers no rights. > Joel Barsotti |
|
|
|
#6 |
|
Posts: n/a
|
Hi Joel,
Have you also viewed Chris and mine response in this thread? Regards, Steven Cheng Microsoft Online Support Get Secure! www.microsoft.com/security (This posting is provided "AS IS", with no warranties, and confers no rights.) Steven Cheng[MSFT] |
|
![]() |
| Thread Tools | Search this Thread |
|
|
Similar Threads
|
||||
| Thread | Thread Starter | Forum | Replies | Last Post |
| Start Up Help - Password/keys/mouse not working | cwaddell27 | General Help Related Topics | 0 | 09-10-2008 05:32 PM |
| (rumor) Toshiba Working With Microsoft On New Entertainment Xbox (360) with built-in HD-DVD | AirRaid | DVD Video | 6 | 10-21-2007 02:19 AM |
| FileUpload Web Control is not working with Atlas | rajesh20k | Software | 0 | 02-20-2007 03:55 PM |
| Internet connection not working | Japh84 | General Help Related Topics | 0 | 11-12-2006 11:34 PM |
| Windows ME Default Icons Not Working | C Lee | A+ Certification | 1 | 05-19-2004 05:27 PM |