Sto tentando di implementare una funzionalità in cui è presente una stored procedure su SQL Server che deve essere chiamata dall'applicazione ASP MVC ed elaborata sullo sfondo (potrebbe richiedere molto tempo poiché chiama un'altra stored procedure in remoto per elaborare un file Excel memorizzato su un server). Ma la risposta dell'ultima richiesta HTTP dovrebbe essere restituita al client, quindi l'interfaccia utente non sarà sospesa in attesa dell'elaborazione.Esegui attività in background ma restituisce risposta al client nell'applicazione Web ASP MVC
Ho provato tanti modi diversi ma l'interfaccia utente non risponde ancora immediatamente.
ho cercato BackgroundWorker
ma non è che consente il thread principale di risposta al cliente fino alla sua trasformazione a farsi, anche ho provato:
Thread.QueueUserWorkItem(delegate { //method which performs stored procedure calls//
});
Ancora non tornare risposta e HttpContext.Current
non disponibile in thread in background.
Forse c'è un modo per avviare l'elaborazione in background, metterlo in pausa per lasciare che il thread principale restituisca la risposta al browser e quindi riprendere il thread in background per eseguire tutta l'elaborazione con le chiamate stored procedure?
Mi manca qualcosa?
Qualcuno potrebbe dare un'idea di come posso risolvere questo problema? Sarebbe molto apprezzato
Vorrei sconsigliare di provare a mantenere qualcosa come il contesto HTTP. Ovviamente hai bisogno di qualcosa da questo, quindi passa tutto ciò che è nel tuo thread in background come stato del thread ed esegui l'elaborazione. Questo non è solo più semplice, ma definendo ciò di cui ha bisogno il tuo thread, è meglio definirne lo scopo. –