2011-01-05 87 views
1

大家都知道,似乎ASP.NET应用程序总是抛出一些无效的ViewState错误,但现在我实际上找到了在我的网站上重现一个错误的方法。自定义404页面和无效Viewstate错误

正在发生的事情是,一个用户试图访问一个不存在的页面,我做了:

if (CurrentItem == null) { 
     throw new HttpException(404, "Page not found"); 
    } 

这将用户重定向到我们自定义的404页。这个404页面只是我们系统中的常规页面,我们通过web.config重定向到该页面。搜索功能在此页面上可见。但是当我从这个页面做回发时,错误似乎发生了。所以,如果你去例如。

http://alternativeto.net/software/doesntexist

然后使用搜索形式在右上角和类型,例如Dropbox的,按下回车键(如果你得到一个自动建议不要点击导致它只会您链接到该应用程序)和巴姆,你会得到一个错误,即“无效的Viewstate”bla bla。

任何人都知道我该如何解决这个问题?这是否是我如何抛出404错误?我可以想象它有什么与重定向到自定义404页面和待办事项和asp.net魔术处于某种无效状态?也许我可以改变我的web.config中的东西来纠正这个问题?

感谢您的帮助!要摆脱尽可能多的错误,尽可能当然:)

UPDATE

好像我解决了它自己的。当MS有安全问题时,他们建议将错误重定向更改为redirectMode =“ResponseRewrite”当我将其更改为redirectMode =“ResponseRedirect”它似乎工作正常!

更新2

但我也意识到,我宁愿希望有ResponseRewrite解决方案,因为它会留在该网址是得到了错误,这是更清洁。所以我仍然很乐意找到一个适用于ResponseRewrite的解决方案。

回答

0

搜索框应始终使用GET,绝不会POST(!!)。所以不要使用回传进行搜索,用表格方法装饰你的文本框=“get”action =“searchpage”,你是免费的,所有的访问者会更开心

+0

啊,这可能是一个很好的建议。无论如何,我正在使用查询字符串进行重定向,所以无论如何这当然是一个更有效的解决方案。但是,当涉及到这样的东西时,ASP.NET有点奇怪,因为整个页面是一个很大的形式。所以必须用Javascript或我想要的东西来做些事情。 – Olaj 2011-01-05 15:10:20