Я внедрил пользовательский IExceptionFilter, чтобы обрабатывать исключение, которое испытывают некоторые пользователи в библиотеке сторонних разработчиков, потребляемой нашим приложением. Когда возникает это конкретное состояние ошибки, мне нужно изменить файлы cookie пользователя (чтобы очистить их состояние сеанса), но то, что я нахожу, заключается в том, что никакие файлы cookie, похоже, не выходят из фильтра. Не уверен, что не так, или даже как отладить его.Невозможно установить Cookie в ASP.NET MVC IExceptionFilter
Я изменил фильтр функциональных бит, чтобы упростить намерение, но вот суть фильтра. Я убедился, что это первый фильтр, который запускается на контроллере, и протестировал удаление фильтра HandleErrorAttribute, но безрезультатно. После запуска кода ниже «comecookie» никогда не устанавливается на клиенте.
public class HandleSessionErrorAttribute : FilterAttribute, IExceptionFilter
{
public void OnException(ExceptionContext filterContext)
{
if (filterContext == null) throw new ArgumentNullException("filterContext");
var exception = filterContext.Exception as HttpException;
if (exception != null && exception.Message.Equals("The session state information is invalid and might be corrupted."))
{
filterContext.HttpContext.Response.Cookies.Add(new HttpCookie("somecookie")
{
Value = DateTime.Now.ToString(),
Expires = DateTime.Now.AddMinutes(5),
});
}
}
}