24 messaggi dal 16 febbraio 2001
Salve a tutti.
Sto cercando di pianificare un caricamento di una tabella che deve verificare ogni 15" una serie di eventi.
La procedura è scritta in VB e il global.asax è il seguente:

<%@ Application Language="VB" %>
<script runat="server">
Sub Application_Start(ByVal sender As Object, ByVal e As EventArgs)
' Code that runs on application startup
Dim myScriptResDef As New ScriptResourceDefinition()
myScriptResDef.Path = "~/Scripts/jquery-1.11.1.min.js"
myScriptResDef.DebugPath = "~/Scripts/jquery-1.11.1.js"
ScriptManager.ScriptResourceMapping.AddDefinition("jquery", Nothing, myScriptResDef)

Dim myTimer As New System.Timers.Timer()
myTimer.Interval = 900000
myTimer.AutoReset = True
AddHandler myTimer.Elapsed, New System.Timers.ElapsedEventHandler(AddressOf myTimer_Elapsed)
End Sub

Public Sub myTimer_Elapsed(source As Object, e As System.Timers.ElapsedEventArgs)
Dim objSaldi As New Saldi()
objSaldi.CaricaSaldi()
End Sub

Sub Application_End(ByVal sender As Object, ByVal e As EventArgs)
' Code that runs on application shutdown
End Sub

Sub Application_Error(ByVal sender As Object, ByVal e As EventArgs)
' Code that runs when an unhandled error occurs
End Sub

Sub Session_Start(ByVal sender As Object, ByVal e As EventArgs)
' Code that runs when a new session is started
End Sub

Sub Session_End(ByVal sender As Object, ByVal e As EventArgs)
' Code that runs when a session ends.
' Note: The Session_End event is raised only when the sessionstate mode
' is set to InProc in the Web.config file. If session mode is set to StateServer
' or SQLServer, the event is not raised.
End Sub
</script>

In fase di compilazione non mi da errori.
Ho avviato per la prima volta l'applicazione tramite browser chiudendolo successivamente.
Non ho modificato il timeout di inattivita' che e' a 20" ma la tabella non si aggiorna.
Dove sbaglio?
Come posso eventualmente fare un debug per verificare se l'applicazione parte regolarmente o va in errore?
La procedura, in produzione, andra' su un web server non gestito da me.
Grazie.
Scusa ma forse ho capito male. Stai lavorando con le operazioni pianificate? Allora ti serve una console application, di quelle classiche con il main, dove inserire il tuo codice e l'intervallo di ripetizione sarà quello che imposti nell'operazione pianificata. Penso che sia il metodo più semplice. Un'alternativa è il wget.
Non ho mai provato nel modo che indichi tu ma dubito che potrebbe funzionare. L'unico problema è l'application start: quando avviene la prima chiamata all'applicazione? La richiami tu manualmente? Prova a riavviare IIS... ma dopo? non puoi controllare cosa fa il framework, magari ricicla il pool di applicazioni o si ferma per qualche motivo: dopo chi riavvierà il tutto? Su questo ho molti dubbi.

L'unico modo di fare debug in questo modo è inserendo un file di log.

Ulteriore conferma dalla documentazione:
https://msdn.microsoft.com/en-us/library/ms178473.aspx

Application_Start

Called when the first resource (such as a page) in an ASP.NET application is requested. The Application_Start method is called only one time during the life cycle of an application. You can use this method to perform startup tasks such as loading data into the cache and initializing static values.

You should set only static data during application start. Do not set any instance data because it will be available only to the first instance of the HttpApplication class that is created.
Modificato da manuel0081 il 20 luglio 2015 09.08 -

Ormai programmano tutti... ma la professionalità appartiene a pochi
24 messaggi dal 16 febbraio 2001
Prima di tutto grazie per la risposta.
L'idea l'ho presa da diverse fonti in rete.
Ne ho trovato un esempio anche in un articolo di Cristian Civera del 17 settembre 2002 ma soprattutto in questo sito:
https://chandradev819.wordpress.com/2011/04/10/how-to-create-a-job-scheduler-in-asp-net-application/
Ovviamente il primo start avviene quando si avvia la procedura via web.
Ho settato a 15" proprio per non far far andare in timeout IIS che e' di 20".
Ad ogni modo approfondisco le osservazioni che hai scritto.

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.