Por un lado tengo un modulo creado para DotNetNuke. La función del modulo es la de verificar si determinadas url’s están activas, en caso contrario envía un reporte de las url’s caídas a una cuenta de mail definida también en dicho modulo. Básicamente se cargan direcciones web al modulo, el modulo comprueba que sea una url valida (es decir que tenga el siguiente formato: http://xxxxx.xxx), luego procede a verificar si esta activa. Además de verificar si esta activa puede verificar la existencia de alguna porción de código, por ej.: imagen-oculta.gif con el fin de asegurar que la url este activa y funcionando correctamente, ya que puede estar activa pero estar siendo hackeada con lo cual el contenido no será el correspondiente. Esto ultimo es opcional.
En caso detectar que la url no esta activa o bien esta activa pero el elemento buscado (por ej.: imagen-oculta.gif) no se encuentra envía un reporte por correo electrónico, esta dirección de correo se define en la configuración del modulo.
Por otro lado, para evitar tener el navegador abierto con la pagina que contiene el modulo para que este se ejecute, se pensó en volcar esta funcionalidad a una dll e ingresarla en el programador de tareas de DotNetNuke. El programador de tareas de DotNetNuke permite ejecutar aplicaciones sin depender del navegador. Lo que se hace es una vez creado el archivo .dll (y ubicado en la carpeta bin de la instalación DNN) se ingresan los parámetros de este archivo en el programador de tareas, se definen algunos parámetros mas como ser tiempo entre una ejecución y otra, periodicidad de ejecución, etc.).
Hasta ahora se logro crear la dll y configurarla correctamente en el programador de tareas de DNN, realiza la comprobación de una url y reporta en caso de encontrarla con fallos. El inconveniente que surge es la obtención de los datos ingresados a través del modulo para así poder procesarlos. Hasta ahora no se pudo realizar esto. Como las funciones utilizadas en el modulo no son las mismas para la dll, se pensó en acceder a los datos directamente desde las tablas correspondientes en la base de datos. Lo ideal es utilizar lo que esta definido en el web.config de la instalación. Igualmente a modo de pruebas se intento conectar colocando la línea de conexión en el archivo dll copiando la línea que figura en el web.config, también se intento obtener una línea de conexión valida creando un nuevo proyecto y agregando un connectionstring en la Settings del proyecto, ahí se configuro a que servidor apunta, que base de datos y que autenticación se usa, después se copio esto al código de la dll. Todo esto sin resultados.
Estas son algunas de las variantes que se uso para el string de conexión, solo para probar a conectar directamente, de igual manera esta el ejemplo en los adjuntos:
sCnn ="Data Source=DAVID-E7971C50E;Initial Catalog=DotNetNuke;Integrated Security=True";
string sSel = "SELECT * FROM YourComany_LinkChecker";
sCnn ="Data Source= .\SQLExpress;Initial Catalog=DotNetNuke;Integrated Security=True";
string sSel = "SELECT * FROM YourComany_LinkChecker";
sCnn ="Data Source= DAVID-E7971C50E\SQLExpress;Initial Catalog=DotNetNuke;Integrated Security=True";
string sSel = "SELECT * FROM YourComany_LinkChecker";