ASP.Net 2.0&UP ViewState丢失问题
没有仔细研究过ViewState,最近出现的问题让人头痛不已。
ViewState会在某些特定情况下消失,且很难捕捉到。查了一些技术文章,都是说ViewState的机制是将信息存在页面的hidden input里面,似乎不可能存在这些问题,给出的理由无非是在某个地方被某个不小心的程序员给禁掉或清除掉了。但找了很久也没找到这个地方......
一个偶然的机会看到了一篇关于ViewState机制的文章,当看到下面这段文字时顿时豁然开朗
----------------------------我是分割线-------------------------------------------------------------------------
呵呵,有的。从APS.NET2.O开始,微软为我们提供了!顾名思义,这个类可以将VIEWSTATE存储在Session中,而不是Hidden Input中。这可以用于大数量级的VIEWSTATE处理,它的实现也异常简单
---转自“自由飞” http://www.cnblogs.com/freeflying/archive/2010/01/03/1638264.html
----------------------------我是分割线-------------------------------------------------------------------------
果然在基类中找到了如下方法:
///设置 ViewState对象 保存在Session中
protected override PageStatePersister PageStatePersister
{
get
{
return new SessionPageStatePersister(this);
}
}
原来自从2.0以来,多了一种选择,可以将ViewState信息存到Session中,Session和页面相比具有安全、节省带宽资源等好处、减少客户端资源消耗,但是但是但是缺点也不少。由于实际保存在Session中,Session的所有缺点都会具备。如果没有个好的Session管理车略极容易出现丢ViewState丢失的情况。
所以大家在选择ViewState的保存机制时要小心啊。除非必要建议还是用它本来的方式吧。
///设置 ViewState对象 保存在页面中
protected override PageStatePersister PageStatePersister
 
相关文档:
使用ASP.Net Forms模式实现WebService身份验证
在安全性要求不是很高的ASP.Net程序中,基于Forms的身份验证是经常使用的一种方式,而如果需要对WebService进行身份验证,最常用的可能是基于Soap 标头的自定义身份验证方式。如果对两者做一下比较的话,显然,基于Forms的验证方式更加方便易用,能否将F ......
ASP.NET 提供三种用于在出现错误时捕获和响应错误的主要方法:Page_Error 事件、Application_Error 事件以及应用程序配置文件 (Web.config)。
如果您不调用 Server.ClearError 或者捕获 Page_Error 或 Application_Error 事件中的错误,则将根据 Web.config 文件的 <customErrors> 部分中的设置处理错误。在 <cus ......
using System;
using System.Collections;
using System.ComponentModel;
using System.Web;
using System.Web.SessionState;
using System.Timers;
using System.Data;
using System.Data.SqlClient;
namespace SMS_joke
{
/// <summary>
/// Global 的摘要说明。
/// </summary>
public class ......