Я пытаюсь выяснить, могу ли я установить cookie во время события Application_Error () global.asax.
Когда я отлаживаю свое приложение, похоже, что код добавляет cookie, но затемраз он загружается, печенье исчезло.Это воссоздает печенье каждый раз.Я попробовал это локально (используя casini) или сервер.
Я начал думать, что это невозможно сделать.
Вот небольшой фрагмент кода.
global asax
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
}
}
Контроллер, вызывающий ошибку
public ActionResult Index()
{
int a = 0;
int b = 2;
try
{
int hello = (b / a);
}
catch (Exception e)
{
throw;
}
return View();
}
Обновление - чтобы ответить на комментарий Tejs - Цель проекта - отправить сообщение об ошибке по электронной почте (это легко сделать).Я пытаюсь найти способ предотвратить спам в почтовом ящике, если пользователь постоянно нажимает клавишу F5 (хотя файлы cookie могут быть хорошей идеей).
обновление 2 - я изменил свой глобальный asax наотразить ближе к тому, что я пытаюсь достичь