L'identité de l'utilisateur ASP.NET n'est pas disponible dans Application.Start, ce qui permet d'écrire dans la base de données. (Le site Web s'exécute sur un hôte partagé, donc je n'ai pas pu configurer les permissions comme j'ai besoin.) Donc, j'ai implémenté ce qui suit dans global.asax. Je ne suis pas sûr si c'est complètement thread safe. Je souhaite supprimer le délégué pour éliminer la vérification des verrous afin d'optimiser les performances.Début de l'application
Je me demande si le "if (TheFirstReq! = Null)" peut échouer. Merci
delegate void FirstRequest();
static volatile FirstRequest TheFirstReq;
static object ObjLock = new Object();
void Application_Start(object sender, EventArgs e)
{
// Code that runs on application startup
AppStartDateTime = DateTime.Now;
TheFirstReq = FirstReq;
}
void FirstReq()
{
lock (ObjLock)
{
if (TheFirstReq == null)
return;
TheFirstReq = null;
// Log Application start.
}
}
protected void Application_BeginRequest(object sender, EventArgs e)
{
if (TheFirstReq != null)
TheFirstReq();
}