2009-05-11 22 views
11

Estoy ejecutando .NET en un cuadro de Windows y me gustaría tener una función que se ejecuta todas las noches a la medianoche. Por supuesto, dado que HTTP sin estado y Windows no tienen una función tipo "trabajo cron" (que yo sepa), tendré que visitar mi sitio todas las noches a la medianoche o simplemente esperar a que un usuario visite el sitio para confiar en ser actualizado.¿Cómo emular las tareas cron en un servidor de Windows?

¿Existe una alternativa a esto que pueda crear donde algo se ejecutará automáticamente en un momento determinado?

Gracias

+0

Gracias por la edición, Milen. – Adrien

Respuesta

7

Si ninguna de las otras respuestas funciona para usted, aquí es una opción:

Hay un montón de servicios de monitoreo de servidor se desconecte allí realizará una llamada http a su sitio a intervalos regulares (cada minuto si lo desea). Puede obtener intervalos de 5 minutos gratis en algunos de ellos.

Cree una página protegida por contraseña, que realice su función (si aún no se ha hecho hoy) y apunte ese servicio a ella.

Al menos de esta manera no tendrá que escribir nada adicional, y puede descansar tranquilo sabiendo que no depende de su máquina doméstica.

+0

Estoy usando pingdom para este propósito. Por cierto, ¿hay alguna razón para la página protegida con contraseña? – faulty

+1

Sólo por razones de seguridad, por lo que alguna persona anónima no puede llamar a su función con más frecuencia que usted Querríamos, si llegaran a conocer la url. – Nik

12

estoy bastante seguro de que el programador de tareas de Windows puede hacer más cosas que cron puede hacer. Pero podría estar perdiendo algo.

Editar: alcanzado en Configuración -> Panel de control -> Tareas programadas

+0

Programador de tareas es el camino a seguir. –

+0

hablé con mi anfitrión y me dijeron que no tenían nada como esto ... ¿hay algo que pueda escribir en el código? – Jason

+0

¿Alguien sabe cómo hacer esto w/godaddy.com hosting? – Jason

0

Utilice la clase Timer para crear un temporizador que periódicamente llama a un método para ser ejecutado.

Se puede iniciar un temporizador estático en el evento Application_Start en la clase Global. Debido a que el temporizador utiliza un intervalo en lugar de un tiempo absoluto, deberá calcular el intervalo de tiempo hasta la medianoche y configurar la propiedad Interval según corresponda.

0

Parece que GoDaddy has provisions for this, pero hay más de una forma de hacerlo: Al instalar Drupal sino que se debe configurar una tarea programada, y he descubierto que los miembros del proyecto han documentado a fondo este paso . Vaya a http://drupal.org/cron para obtener más información y recuerde leer http://drupal.org/node/31506 para obtener información específica de Windows. Si todo lo demás falla, busque "trabajo cron web" y use un servicio comercial "cron job". Elige con cuidado, no te timen.

+0

ese primer enlace es solo para configuraciones de Linux, lo vi. No tengo drupal instalado – Jason

+0

No es una solución específica para drupal, es solo que los chicos de Drupay han hecho un gran trabajo documentando las alternativas ampliamente. – codehead

5

Jeff Attwood en algún momento del podcast mencionó un truco sucio para usar la devolución de llamada caché de caducidad para falsificar esto.

Insertaba un elemento en .Net's Cache, con una caducidad establecida en 2 horas, y una devolución de llamada para que se le llamara cuando el elemento caducara, y ese era su cron.

creo que este fue el artículo:
http://www.codeproject.com/KB/aspnet/ASPNETService.aspx?display=Print

Es un asco si me preguntas, pero para una solución de alojamiento compartido, no puede pensar en algo mucho mejor.

Además, hay servicios de cron externos que le dan una URL para y lo harán "ping" de manera regular, como: (estos no son libres)
http://webcron.org/
http://www.webbasedcron.com/

+0

interesante ... aunque ninguno de los dos enlaces inferiores que publicó son gratuitos: \ – Jason

+0

¡Vaya! Webcron.org era gratis, seguro, lo he usado en el pasado. Corregí la respuesta, gracias. –

+0

También puede usar pingdom, que es gratis también – faulty

1

también se puede echar un vistazo a cuarzo.Net http://quartznet.sourceforge.net/ que es un programador

+0

miré esto, pero ¿es solo para aplicaciones de escritorio o es algo que puede ejecutar en un sitio web? Simplemente no veo cómo funcionaría en un sitio web ... – Jason

0

También estoy enfrentando el mismo problema. Quiero ejecutar ASP.NET con MSSQL en GoDaddy. Pero no tienen una tarea de esquema para el alojamiento de Windows. Después de leer la publicación, hice mi propio google y encontré este planificador gratuito de trabajos de cron web:

Lo intenté y funciona perfectamente ... bueno, casi. El trabajo vence en 1 año.

http://www.setcronjob.com/

espero que ayude.

+0

recurso muy bueno, aunque la cuenta gratuita expira después de 3mos no 1 año. No está mal aunque no te importe un poco de mantenimiento – Jason

+0

opps. sí, son 3 meses. 1 año son para esas transacciones pagas. Pero, bueno, al menos podemos recrear manualmente los trabajos cron cada 3 meses. De todos modos, para el 1 año de vencimiento, es mínimo de $ 5 por 10 trabajos cron. No está mal :) any1 else tiene otros sitios gratuitos de trabajo cron para recomendar? –

0

Buscando una respuesta a la misma pregunta, me encontré con this post (quartz-net-with-asp-net) instrucciones de configuración para Quartz.NET ("Job Scheduler Enterprise para plataforma .NET", desde su página web) incluso desde dentro de una aplicación ASP.NET.

Lo agregó aquí principalmente como referencia.

Cuestiones relacionadas