Pregunta

Nuestras aplicaciones utilizan muchos componentes compartidos.Algunos de ellos no tienen necesidad de almacenar en caché, por ejemplo, los servicios de Windows que procesan los correos electrónicos no disminuyeron.Nunca en caché ese conjunto de resultados ...

El problema es que, dado que nuestra capa de datos compartida se ha modificado para usar SQLCachEdePendencia, nuestros servicios que no inician SQLDEpendencia fallan en las llamadas de la base de datos donde la capa de datos solicita un objeto SQLCachEdependencia.

Lo que lleva a la pregunta, ¿hay una manera de que las clases de datos prueben si el servicio de agente está escuchando (es decir, se ha llamado SQLDEPENDENCY.SART (LetSetString))?

El objeto SQLDEpendency en sí no tiene una propiedad habilitada o similar.¿Hay alguna forma de obligar a la aplicación de llamadas a Dile la capa de datos que SQLCaching está en uso para la capa de datos para determinar el estado?

¿Fue útil?

Solución

Bastante la respuesta es no.Terminamos agregando una variable de configuración que, si es falsa o no presente, hace que la solicitud use SQLCachEdePendencia a saltarse.

Otros consejos

Seleccionar * de SYS.SERVICE_QUEUES DONDE NÚMERO COMO 'SQLQUERYNOTIFICATIONSERVICE -%'

devuelve un 'sqlquerynotificationservice- [algunos guid]'

Y si mira profundamente a los miembros no públicos de SQLDEPENDENCY _SERVERUSERHASH mientras se depura en el IDE, encontrará una colección que contiene la misma entrada.Si Microsoft sería tan amable de exponer eso, entonces sí.

En mi caso, tengo una biblioteca de clases que es utilizada por algunas aplicaciones web.Así que no tengo app.config.También uso la SQLCachEdePendencia en un evento estático.Así que estoy usando un booleano estático como:

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

hasta ahora está funcionando, pero estoy abierto a sugerencias al usar bibliotecas de clase.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top