Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
ASP.NET 2.0 / 3.5 / 4.0
Output cache e dati nel db
domenica 29 giugno 2008 - 20.48
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
Giovanni_3478
Profilo
| Senior Member
293
messaggi | Data Invio:
dom 29 giu 2008 - 20:48
Ciao
[C#, aspnet 3.5]
In una pagina aspx sto usando la direttiva OutputCache
<%@ OutputCache Duration="86400" Location="any" VaryByParam="none" %>
Nella stessa pagina c'è una connessione al db con il controllo Sqldatasource
e un controllo ListView.
Con l'outputcache viene mostrata sempre la stessa pagina fino alla durata della cache
quindi anche se modifico i dati nel db appaiono sempre gli stessi dati:
c'è un modo per usare l'output cache
facendo però rigenerare la pagina quando vengono modificati i dati nel db
rossimarko
Profilo
| Guru
1.173
messaggi | Data Invio:
lun 30 giu 2008 - 00:28
Ciao,
se la tua esigenza è quella di ricaricare i dati solo quando vengono modificati su db allora ti consiglio di guardare la SqlDependency:
http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqldependency.aspx
Però occhio che funziona solo con sql server. Qui puoi trovare un tutorial:
http://quickstarts.asp.net/QuickStartv20/aspnet/doc/caching/SQLInvalidation.aspx
-----------------------------------------
Rossi Marco
http://blogs.dotnethell.it/rossimarko
Giovanni_3478
Profilo
| Senior Member
293
messaggi | Data Invio:
lun 30 giu 2008 - 12:01
Ciao
Ho attivato l'sqlcacheDependency:
ho usato un linkbutton e al click eseguo questo codice
protected void AttivaSqlcache(object sender, EventArgs e)
{
System.Web.Caching.SqlCacheDependencyAdmin.EnableNotifications(ConfigurationManager.ConnectionStrings["connstr"].ConnectionString);
System.Web.Caching.SqlCacheDependencyAdmin.EnableTableForNotifications(ConfigurationManager.ConnectionStrings["connstr"].ConnectionString, "Table1");
}
Dopo di che ho inserito nella pagina <%@ OutputCache Duration="86400" Location="any" VaryByParam="none" SqlDependency="connstr:Table1" %>
Non mi resituisce errori,
ma non funziona: cioè quando inserisco i dati nel db la pagina continua a visualizzare la pagina cache-ata.
Cosa ho sbagliato?
rossimarko
Profilo
| Guru
1.173
messaggi | Data Invio:
lun 30 giu 2008 - 12:53
Hai già verificato i seguenti punti?
Common issues that prevent queries from working with Sql Server 2005 query notifications are:
1. Queries must explicitly include column names in the SELECT statement. Using "SELECT *" results in a query that will not be registered with Sql Server 2005 query notifications.
2. Table names in queries must include the ownername. For example, if you issue a query against the authors table in the pubs database, the query must reference the table as "dbo.authors".
3. The security identity running the query must have rights to register queries for notification in Sql Server 2005. This right can be granted with the following T-SQL command: GRANT SUBSCRIBE QUERY NOTIFICATIONS TO username.
4. The security identity running the query must also have rights to send query notifications from Sql Server 2005. This right can be granted with the following T-SQL command: GRANT SEND ON SERVICE::SqlQueryNotificationService TO username.
-----------------------------------------
Rossi Marco
http://blogs.dotnethell.it/rossimarko
Giovanni_3478
Profilo
| Senior Member
293
messaggi | Data Invio:
mer 2 lug 2008 - 13:21
Devo applicare questi 4 accorgimenti
GRANT SUBSCRIBE QUERY NOTIFICATIONS TO mioUsername; SELECT data, titolo, comunicazione from dbo.Table1
Mi restituisce un errore
Cannot find the user 'mioUsername', because it does not exist or you do not have permission.
Ho sbagliato qualcosa nella sintassi sopra?
rossimarko
Profilo
| Guru
1.173
messaggi | Data Invio:
mer 2 lug 2008 - 14:26
No, dice semplicemente che lo username non esiste. Tu l'hai creato a livello di login sql e gli hai dato l'accesso al tuo db?
-----------------------------------------
Rossi Marco
http://blogs.dotnethell.it/rossimarko
Giovanni_3478
Profilo
| Senior Member
293
messaggi | Data Invio:
mer 2 lug 2008 - 18:02
Io per connettermi al db uso una connectionString che non mi restituisce errori
Quello che dici tu non l'ho fatto
Come devo farlo?
rossimarko
Profilo
| Guru
1.173
messaggi | Data Invio:
mer 2 lug 2008 - 19:21
Lo script
GRANT SUBSCRIBE QUERY NOTIFICATIONS TO mioUsername
lo devi eseguire direttamente su sql, una sola volta. Lo devi fare all'interno dell'ambiente di sql. Che versione stai utilizzando? Sql 2005? 2005 express?
-----------------------------------------
Rossi Marco
http://blogs.dotnethell.it/rossimarko
Giovanni_3478
Profilo
| Senior Member
293
messaggi | Data Invio:
mer 2 lug 2008 - 19:59
Sql 2005
rossimarko
Profilo
| Guru
1.173
messaggi | Data Invio:
ven 4 lug 2008 - 11:34
Allora lo script
GRANT SUBSCRIBE QUERY NOTIFICATIONS TO mioUsername
lo devi lanciare all'interno di una query fatta da Sql Server Management Studio.
-----------------------------------------
Rossi Marco
http://blogs.dotnethell.it/rossimarko
Giovanni_3478
Profilo
| Senior Member
293
messaggi | Data Invio:
ven 4 lug 2008 - 11:47
Sì
Ho chiesto al mio hoster se è possibile lanciare questo script nel loro db
che è Sqlserver 2005
ed quello che uso io nei miei siti.
Mi hanno detto di no.
Grazie mille per l'aiuto.
Ciao
Torna su
Stanze Forum
Elenco Threads
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?
Dopo esserti registrato potrai chiedere
aiuto sul nostro
Forum
oppure aiutare gli altri
Consulta le
Stanze
disponibili.
Registrati ora !