Domanda

Abbiamo un sito web in cui abbiamo bisogno di una pianificazione per ricevere le notifiche (e-mail) di tempo specifico. per esempio. una persona impostazione richiamo alle 17:00 per partecipare alla riunione alle 16:45, riceverà e-mail a 16:45 circa lo stesso.

Dato che questo sito è ospitato su server condiviso, non abbiamo alcun controllo sul server per eseguire qualsiasi applicazione SQL lavoro o di pianificazione.

C'è qualcosa in asp.net che può aiutare in questo scenario?

È stato utile?

Soluzione

Che ne dite di questo: Simulare un servizio di Windows utilizzando ASP.NET per eseguire processi pianificati .

A un certo punto questa tecnica è stata utilizzata su Stack Overflow , anche se io non credo che sia più.

Per essere onesti sembra un brutto, soggetto a errori hack per me, ma se siete in grado di eseguire qualsiasi cosa sul server tranne che per il sito web allora qualcosa come questo è probabilmente l'unica opzione.

Altri suggerimenti

È necessario avere un lavoro fatto sul server, ma non avete buon modo di innescare da ASP.NET?

Come sulla creazione di una pagina web che inizierà il vostro lavoro, e hanno una corsa timer altrove (es. Su un altro computer) che richiede la pagina. (Basta colpire la pagina per attivare le offerte di lavoro)

Ho avuto lo stesso problema come voi e ho finito con una programmazione di un servizio che utilizzano Quartz.NET: http: //quartznet.sourceforge.net/ e connettersi al stesso database del sito web.

Con ASP.NET non sono garantiti che la vostra applicazione è vivo in ogni momento, e le applicazioni web in tal modo come un processo host per una soluzione di pianificazione non è fattibile IMO.

Un servizio di Windows è quello che serve per questo scenario. Hai il pieno controllo su avviare e arrestare il processo così come modi di controllare l'applicazione.

Sei in grado di ospitare un tale servizio su una macchina diversa? Anche se l'applicazione Web è in esecuzione su un server ospitato non significa che si deve eseguire lo scheduler sullo stesso server.

Se davvero non hanno il controllo del server (significato, non è possibile utilizzare un processo di SQL, un'operazione pianificata, o installare un server Windows) allora si potrebbe utilizzare un System.Threading.Timer che si inizializza in Global.asax (ad esempio, all'avvio dell'applicazione) che richiama un certo metodo nell'applicazione ogni x minuti. Questo metodo potrebbe quindi interrogare il database e vedere ciò che le notifiche devono essere trasmettere.

Questo non è davvero un approccio desiderabile anche se, come il timer non è garantito per invocare sempre per quanto ne so, dal momento che, come dice Pietro, l'applicazione web non è garantito di essere vivo in ogni momento.

Tuttavia, a seconda delle esigenze, può ancora essere un approccio 'abbastanza buono' se non si hanno altre opzioni.

Tuttavia, se davvero sono completamente bloccati e non hanno altra scelta per ospitare nel vostro WebApp,

Si potrebbe guardare a creare un'istanza System.Timers.Timer nel file Global.asax.cs. Wire un evento trascorso come si farebbe normalmente, e dargli un po 'di codice che fa qualcosa sulla falsariga di

protected void myTimer_Elapsed(object sender, EventArgs e)
{
    if(System.DateTime.Now Falls in Some Configured Time-Window)
        //Do Stuff
}

Ma, come qualcuno ha sottolineato, non è garantito come IIS potrebbe reimpostando durante quel periodo, nel qual caso ti manca.

E 'davvero non è auspicabile da fare, ma si può fare quello che Razzie sta suggerendo. Ho visto fare tante volte. Anche se brutto, a volte ya solo fare il brutto hack.

Utilizzando questo metodo, però, è necessario assicurarsi che l'applicazione non viene scaricato. Quindi è necessario un qualche tipo di tenere in vita. Vorrei suggerire la creazione di uno strumento di monitoraggio web che sarà costantemente tirare una pagina (aspx) per mantenere viva l'applicazione. Questi ragazzi sono liberi http://mon.itor.us/

  

Non ti belive, perché fonte   codice di Quartz.Net (1.0 e 1.0.1)   non compila in Visual   Studio.Net 2005 e il 2008. L'unico modo   per arrivare Quartz.Net è quello di utilizzare tutto   pacchetto Spring.Net, che raccoglie   benissimo sotto VS.Net 2005 e il 2008

     

A meno che non si potrebbe condividere alcuni suggerimenti, come   compilare e utilizzare Quartz.dll in   progetto asp.net! (Pagina web   Quartz.Net e readme.txt non lo fa   fornire informazioni sulle fonti   Coude compilation) Ogni suggerimento è   ha accolto con favore!

Ho avuto problemi in un primo momento così, ma questo è perché la necessaria AsemblyInfo.cs è contenuto nella cartella principale. Inoltre, è necessario aggiungere le tre DLL che sono inclusi.

Non belive voi, perché il codice sorgente di Quartz.Net (1.0 e 1.0.1) non compila in Visual Studio.Net 2005 e il 2008. L'unico modo per ottenere Quartz.Net è quello di utilizzare tutta la primavera pacchetto .NET, che compila bene sotto VS.Net 2005 e il 2008

A meno che non si potrebbe condividere alcuni consigli, come compilare e utilizzare Quartz.dll nel progetto asp.net! (Pagina web di Quartz.Net e readme.txt non fornisce alcuna informazione sulla compilation fonte coude) Ogni suggerimento è benvenuto!

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