Как вы все знаете, кажется, что приложения ASP.NET всегда выдают некоторые ошибки Invalid Viewstate, но теперь я действительно нахожу способ воспроизвести их на моем сайте.
То, что происходит, - то, что пользователь пытается получить доступ к странице, которая не существует, и я делаю:
if (CurrentItem == null) {
throw new HttpException(404, "Page not found");
}
Это перенаправит пользователя на нашу пользовательскую страницу 404. Эта страница 404 является просто обычной страницей в нашей системе, на которую мы перенаправляем через web.config. Функция поиска видна на этой странице. Но когда я делаю постбэк с этой страницы, кажется, что произошла ошибка. Так что если вы идете к примеру.
http://alternativeto.net/software/doesntexist
А затем воспользуйтесь формой поиска в правом верхнем углу и введите, например, Dropbox, нажмите ввод (если вы получаете автоматическое предложение, не нажимайте кнопку, потому что он просто свяжет вас с этим приложением), и вы получите ошибка, которая называется «Invalid Viewstate», bla bla.
Кто-нибудь знает, как я могу это исправить? Это потому, что я выбрасываю ошибку 404? Я могу себе представить, что это связано с редиректом на пользовательскую страницу 404, а магия viewstate и asp.net в каком-то смысле недопустима? Может быть, я могу что-то изменить в моем web.config, чтобы исправить это?
Спасибо за любую помощь, которую я могу получить! Конечно, хотите избавиться от как можно большего количества ошибок:)
UPDATE
Похоже, я решил это сам. Когда у MS была эта ошибка безопасности, они рекомендовали изменить перенаправление ошибок на redirectMode = "ResponseRewrite" , когда я изменил его на redirectMode = "ResponseRedirect" , похоже, оно работает нормально!
ОБНОВЛЕНИЕ 2
Но я также понимаю, что я скорее хочу иметь решение ResponseRewrite, так как оно останется на том URL, который получил ошибку, и это намного чище. Поэтому я все равно был бы рад найти решение, которое работает с ResponseRewrite.