Domanda

Le nostre applicazioni utilizzano molti componenti condivisi.Alcuni di loro non hanno bisogno di memorizzare nella cache, ad esempio, i servizi Windows che elaborano e-mail non calibili.Non cachesti mai quel set di risultati ...

Problema è, dal momento che il nostro livello di dati condiviso è stato modificato per utilizzare SQLCacheDependency, i nostri servizi che non avviano SQLDependency fallire sulle chiamate del database in cui il livello dei dati richiede un oggetto SQLCacheDependency.

che porta alla domanda - c'è un modo per le nostre classi di dati da verificare per vedere se il servizio di broker è in ascolto (cioè: ha sqldependency.start (connectionstring) è stato chiamato)?

L'oggetto SQLDependency stesso non ha una proprietà abilitata o simile.C'è qualche modo a corto di forzare l'app di chiamata a dica il livello di dati che SQLCaching è in uso per il livello di dati per determinare lo stato?

È stato utile?

Soluzione

Praticamente la risposta è no.Abbiamo finito per aggiungere una variabile di configurazione che se falsa o non presente, fa sì che la richiesta di utilizzare SQLcaCheDependency da saltare.

Altri suggerimenti

Seleziona * da sys.service_queues dove nome come 'sqlquerynotificationservice -%'

restituisce un 'sqlqueryNotificationService- [alcuni GUID]'

E se sembri profondo nei membri non pubblici della SQLDependency _ServeruserHash durante il debug in IDE, troverai una collezione che contiene questa stessa voce.Se Microsoft sarebbe così gentile da esporre, allora sì.

Nel mio caso ho una libreria di classe che viene utilizzata da alcune applicazioni Web.Quindi non ho app.config.Uso anche la SQLCacheDependency in un evento statico.Quindi sto usando un booleano statico come:

if (!isCachingEnabled)
  isCachingEnabled = SqlDependency.Start(builder.ProviderConnectionString);
.

Finora funziona ma sono aperto ai suggerimenti quando usi le librerie di classe.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top