【发布时间】:2011-06-04 00:02:31
【问题描述】:
众所周知,ASP.NET 应用程序似乎总是抛出一些 Invalid Viewstate 错误,但现在我实际上找到了一种在我的站点上重现错误的方法。
发生的情况是用户试图访问一个不存在的页面,而我做了一个:
if (CurrentItem == null) {
throw new HttpException(404, "Page not found");
}
这会将用户重定向到我们的自定义 404 页面。这个 404 页面只是我们系统中的一个常规页面,我们通过 web.config 重定向到它。搜索功能在此页面上可见。但是当我从这个页面进行回发时,错误似乎发生了。所以如果你去例如。
http://alternativeto.net/software/doesntexist
然后使用右上角的搜索表单并输入例如 Dropbox,按回车键(如果您收到自动建议,请不要点击它,因为它只会将您链接到该应用程序)然后 baam,您会得到错误是“无效的 Viewstate”bla bla。
有人知道我该如何解决这个问题吗?是因为我如何抛出 404 错误吗?我可以想象它与重定向到自定义 404 页面有关,并且 viewstate 和 asp.net 魔术在某种程度上处于某种无效状态?也许我可以更改我的 web.config 中的某些内容来纠正这个问题?
感谢我能得到的任何帮助!当然是想摆脱尽可能多的错误:)
更新
好像是我自己解决的。当 MS 出现该安全错误时,他们建议将错误重定向更改为 redirectMode="ResponseRewrite",而我将其更改为 redirectMode="ResponseRedirect" 似乎工作正常!
更新 2
但我也意识到我更愿意使用 ResponseRewrite 解决方案,因为它会保留在出现错误的那个 URL 上,这样会更干净。所以我仍然很乐意找到一个适用于 ResponseRewrite 的解决方案。
【问题讨论】:
标签: asp.net postback viewstate webforms