J'essaie de voir si je peux définir un cookie pendant l'événement Application_Error() de l'global.asax.Est-il possible de définir des cookies dans Application_error
Lorsque je débogue mon application, il semble que le code ajoute le cookie mais la prochaine fois qu'il se charge, le cookie est parti. C'est recréer le cookie à chaque fois. Je l'ai essayé localement (en utilisant casini) ou un serveur.
Je commence à penser que ce n'est pas possible.
Voici quelques extraits de code.
asax mondiale
protected void Application_Error()
{
var ex = Server.GetLastError();
Server.ClearError();
string keyName = ex.StackTrace;
string[] split = System.Text.RegularExpressions.Regex.Split(ex.StackTrace, "\r\n");
// Don't want the key name to be too long but unique enough
if (split.Length > 0)
{
keyName = split[0];
}
keyName = keyName.Trim();
HttpCookie exist = Response.Cookies[keyName];
if (exist == null || string.IsNullOrWhiteSpace(exist.Value))
{
HttpCookie newCookie = new System.Web.HttpCookie(keyName, "ehllo");
newCookie.Expires = DateTime.Now.AddYears(1);
Response.Cookies.Add(newCookie);
// email people
}
}
contrôleur provoquant l'erreur
public ActionResult Index()
{
int a = 0;
int b = 2;
try
{
int hello = (b/a);
}
catch (Exception e)
{
throw;
}
return View();
}
Mise à jour - pour répondre commentaire de Tejs - L'objectif du projet sera de courrier électronique l'erreur (facile à faire). J'essaie de trouver un moyen d'empêcher la boîte aux lettres d'être spammé si l'utilisateur appuie continuellement sur F5 (je pense que les cookies pourraient être une bonne idée).
mise à jour 2 - J'ai changé pour refléter asax mondiale plus proche de ce que je suis en train d'accomplir
Pourquoi voudriez-vous de définir un cookie sur Application_Error? – Tejs
Mis à jour ma question avec mon raisonnement Tejs – Lareau
Si vous voulez empêcher le spam, vous devez mettre en place une sorte de limitation; Habituellement, cela ne fait que marquer l'heure de la dernière erreur, puis ne pas envoyer une autre erreur par courriel jusqu'à ce que la date et l'heure se soient écoulées. – Tejs