【发布时间】:2012-11-24 15:02:03
【问题描述】:
使用:Visual Studio 2010 和 ASP.net 4.0
我有一个使用 URL 重写的网站,我想将重写的 URL 保留在 Postback 上。我已经阅读了很多关于这个主题的主题,但我仍然无法弄清楚这是否可行。
例如:
http://localhost/ActualPage.aspx?PageID=4
改写为:
http://localhost/member/forum.aspx
该页面包含许多使用回发的控件(例如带有排序和分页的 Telerik RadGrid)。通常,当回发发生时,浏览器会重定向到未重写的 url - 地址栏显示 /ActualPage.aspx?PageID=4 等。在这种情况下一切正常。
但是我想在回发后保留重写后的 URL,所以我编写了代码以将 Form.Action 属性更改为重写后的 URL,如下所示:
Page.Form.Action = "/member/forum.aspx"
现在页面正确地保留了地址栏中的 URL,但在回发发生时会抛出 "Validation of viewstate MAC failed" error - 我也希望它是因为视图状态来自不同的 URL。
奇怪的是,即使 enableViewStateMac 设置为 false(在页面中或 web.config 中),也会出现此问题 - 但无论如何我都不想禁用它。
实际上,我认为我需要做的是告诉页面/视图状态 mac 授权可以接受来自此替代 URL 的输入,但无论如何我都找不到这样做。我尝试了不同的 URL 重写系统来查看是否有所不同,并且我尝试添加了一个生成的 machineKey - 这两者都没有任何区别。有没有办法做到这一点?
总之我想要:
- 重写的页面,回发到重写的 URL
- ViewStateMac 已启用
- 没有视图状态验证错误
我记得在早期版本的 .NET 中使用带有 FormRewriterControlAdapter 的 .browser 文件,但这在 .NET 4 中似乎没有任何区别(我不记得它是否成功保留了 URL)。
【问题讨论】:
标签: asp.net .net-4.0 url-rewriting postback viewstate