我想了解在global.asax的Application_Error()事件期間是否可以設置cookie。是否有可能在Application_error中設置Cookie
當我調試我的應用程序時,它看起來像代碼添加了cookie,但下次加載時,cookie不見了。它每次都重新創建cookie。 我在本地嘗試過(使用casini)或服務器。
我開始認爲這是不可能的。
這是一些代碼片段。
全球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(我雖然餅乾可能是一個好主意)。
更新2 - 我已經改變了我的全球ASAX以反映更接近我想要完成
爲什麼你想設置的Application_Error餅乾嗎? – Tejs 2011-06-01 15:49:19
更新我的問題與我的推理Tejs – Lareau 2011-06-01 17:21:50
如果你想防止垃圾郵件,你需要實施某種節流;通常這只是標記最後一次錯誤的日期時間,然後不發送其他錯誤,直到日期時間+一段時間過去。 – Tejs 2011-06-01 17:31:29