asp.net-mvc – 回发无法使用ASP.NET路由(视图状态MAC验证失败)
|
我正在使用ASP.NET 3.5 SP1 System.Web.Routing与经典WebForms,如 http://chriscavanagh.wordpress.com/2008/04/25/systemwebrouting-with-webforms-sample/中所述 一切正常,我有自定义SEO网址甚至回发作品.但有一种情况,回发总是失败,我得到一个: 验证视图状态MAC失败.如果此应用程序由Web场或群集托管,请确保配置指定相同的validationKey和验证算法. AutoGenerate不能在群集中使用. 以下是重现错误的方案: >使用按钮创建标准webform mypage.aspx 它似乎与url中的子路径数有关.如果至少有2个子路径,则视图状态验证失败. 即使使用EnableViewStateMac =“false”,您也会收到错误. 有任何想法吗?这是一个错误吗? 谢谢 解决方法我通过让我的视图用户控件继承自此类而不是ViewUserControl< T>来解决这个问题. (这是RenderView的补丁).它为我做了伎俩,希望它也适合你.public class ViewUserControlWithoutViewState<T> : ViewUserControl<T> where T : class {
protected override void LoadViewState(object savedState) {}
protected override object SaveControlState() {
return null;
}
protected override void LoadControlState(object savedState) {}
protected override object SaveViewState() {
return null;
}
/// <summary>
/// extracted from System.Web.Mvc.ViewUserControl
/// </summary>
/// <param name="viewContext"></param>
public override void RenderView(ViewContext viewContext) {
viewContext.HttpContext.Response.Cache.SetExpires(DateTime.Now);
var containerPage = new ViewUserControlContainerPage(this);
ID = Guid.NewGuid().ToString();
RenderViewAndRestoreContentType(containerPage,viewContext);
}
/// <summary>
/// extracted from System.Web.Mvc.ViewUserControl
/// </summary>
/// <param name="containerPage"></param>
/// <param name="viewContext"></param>
public static void RenderViewAndRestoreContentType(ViewPage containerPage,ViewContext viewContext) {
string contentType = viewContext.HttpContext.Response.ContentType;
containerPage.RenderView(viewContext);
viewContext.HttpContext.Response.ContentType = contentType;
}
/// <summary>
/// Extracted from System.Web.Mvc.ViewUserControl+ViewUserControlContainerPage
/// </summary>
private sealed class ViewUserControlContainerPage : ViewPage {
// Methods
public ViewUserControlContainerPage(ViewUserControl userControl) {
Controls.Add(userControl);
EnableViewState = false;
}
protected override object LoadPageStateFromPersistenceMedium() {
return null;
}
protected override void SavePageStateToPersistenceMedium(object state) {}
}
}
我blogged about this前一段时间. (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- 将ASP.NET添加到ASP.NET文本框控件的OnBlur属性
- asp.net-mvc – Visual Studio 2010 Full和ASP.NET MVC 2.0
- asp.net – Visual Studio开发服务器使用错误的端口
- .net – 仍然推荐COM吗?
- asp.net – 如何处理@RenderBody()?
- ASP.NET UpdatePanel和Javascript __dopostback
- asp.net-mvc – MVC4 jQuery UI不起作用
- asp.net – Outputcache:VaryByHeader =“User-Agent”或V
- asp.net-mvc – ASP.NET MVC:处理取消按钮的正确方法
- asp.net-core – 什么应该是WEB API Action Method的返回类
- asp.net-mvc – 我何时以及为什么要考虑asp.net
- Asp.Net Webforms Vs Asp.Net WebSite(Razor)Vs
- 在Asp.net Gridview中显示多列中的行
- asp.net – 在Microsoft Windows Azure上设置网站
- asp.net-mvc – 将IQueryable泛型转换为JSON
- asp.net-mvc-3 – 选择更改事件 – Html.DropDow
- asp.net-mvc – 抛出一个404像StackOverflow的,没
- 在Asp.Net中使用Office365 SMTP时出错
- ASP.NET站点在开发期间自动登录
- entity-framework – 术语’scaffold-dbcontext’
