asp.net 处理原文件中过长的viewstate代码

代码如下:

public class XVPage : Page
{
static private DirectoryInfo _Dir;
private DirectoryInfo Dir
{
get
{
if (_Dir == null)
{
_Dir = new DirectoryInfo(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "App_Data"));
if (!_Dir.Exists)
_Dir.Create();
_Dir = new DirectoryInfo(Path.Combine(_Dir.FullName, "ViewState"));
if (!_Dir.Exists)
_Dir.Create();
}
return _Dir;
}
}
protected override object LoadPageStateFromPersistenceMedium()
{
PageStatePersister ps = this.PageStatePersister;
ps.Load();
if (ps.ControlState != null)
ps.ControlState = AntiSerialization((string)ps.ControlState);
if (ps.ViewState != null)
ps.ViewState = AntiSerialization((string)ps.ViewState);
return new Pair(ps.ControlState, ps.ViewState);
}
protected override void SavePageStateToPersistenceMedium(object state)
{
PageStatePersister ps = this.PageStatePersister;
if (state is Pair)
{
Pair pair = (Pair)state;
ps.ControlState = pair.First;
ps.ViewState = pair.Second;
}
else
{
ps.ViewState = state;
}
if (ps.ControlState != null)
ps.ControlState = AntiSerialization(ps.ControlState);
if (ps.ViewState != null)
ps.ViewState = AntiSerialization(ps.ViewState);
ps.Save();
}
private object AntiSerialization(string stateID)
{
string stateStr = (string)Cache[stateID];
string file = Path.Combine(Dir.FullName, stateID);
if (stateStr == null)
stateStr = File.ReadAllText(file);
else
Cache.Remove(stateID);
return new ObjectStateFormatter().Deserialize(stateStr);
}
private string AntiSerialization(object obj)
{
string value = new ObjectStateFormatter().Serialize(obj);
string stateID = (DateTime.Now.Ticks + (long)value.GetHashCode()).ToString(); //产生离散的id号码
File.WriteAllText(Path.Combine(Dir.FullName, stateID), value);
Cache.Insert(stateID, value);
return stateID;
}
protected override void OnUnload(EventArgs e)
{
base.OnUnload(e);
DateTime dt = DateTime.Now.AddMinutes(-20);
foreach (FileInfo fl in Dir.GetFiles())
if (fl.LastAccessTime < dt)
try
{
fl.Delete();
}
catch
{
}
}
}

只需要在页面后台中继承XVPage 就可以了
public partial class Index_Content : XVPage

(0)

相关推荐

  • Asp.net中static变量和viewstate的使用方法(谨慎)

    在.Net平台下进行CS软件开发时,我们经常遇到以后还要用到某些变量上次修改后的值,为了简单起见,很多人都习惯用static来定义这些变量,我也是.这样非常方便,下一次调用某个函数时该变量仍然保存的是处理过的值,直接拿来用就可以了. 现在转入了BS软件开发,我们很自然地会沿用这种习惯.如在页面中统计某个按钮被按下的次数,先在类中OnClick事件的处理过程前定义一static变量times,则每次调用该按钮的OnClick事件时,令times增1即可,非常方便: [C#]: 复制代码 代码如下:

  • asp.net生成静态后冗余代码,去掉viewstate生成的代码

    看着自己网站编译之后的源文件,里面很多乱七八糟的东西,看了就觉得不舒服 复制代码 代码如下: <input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwULLTE3NjgxMzM0MDIPZBYCZg9kFgIC-- 还有form源文件,一看就知道是asp.net的页面 复制代码 代码如下: <form name="form1&quo

  • asp.net中ViewState的用法详解

    在web窗体控件设置为runat = "server",这个控件会被附加一个隐藏的属性_ViewState,_ViewState存放了所有控件在ViewState中的状态值.ViewState是一个名称/值的对象集合.当请求某个页面时,ASP.NET会把所有控件的状态序列化成一个字符串,然后作为窗体的隐藏属性送到客户端,当客户端吧页面回传时,ASP.NET分析回传的窗体属性,并赋给控件对应的值. 当我们在写一个asp.net表单时, 一旦标明了 form runat=server ,那

  • asp.net viewstate 回发机制

    所谓回发机制,其实说白了就是自己发送给自己(本页面)而已.下面我们新建一个网站,打开默认添加的Default.aspx页面,form部分代码如下: 复制代码 代码如下: <form id="form1" runat="server" > <div> </div> </form> 下面是运行页面后的HTML代码: 复制代码 代码如下: <form name="form1" method=&quo

  • ASP.NET笔记之 viewstate与cache的使用

    1. (1.默认情况下ASP.Net是启用ViewState的,这样在页面中会生成冗长的隐藏字段,ViewState对于需要PostBack处理的页面才可能有用,对于新闻展示页面不需要交互完全没必要用ViewState. (2.禁用ViewState的方式:• 页面整体禁用ViewState:在顶部Page中EnableViewState="False"• 指定控件禁用ViewState,在控件上EnableViewState="False" (3.页面禁用View

  • asp.net 禁用viewstate在web.config里

    复制代码 代码如下: <pages enableSessionState="true" enableViewState="false" enableViewStateMac="false" />

  • asp.net 去除viewstate第1/2页

    看下这段代码:生成了这么多的一段东西,这段东西对seo一点好处也没有.而我要做的就是去掉它,但有一点,去掉但不能让它原来的控件和内容都发生变化,比如说不能使用等等.所以我要做的仅仅是用另一种方式去保存这些数据.这是一段用base64编码的数据而并不是加密,我很好奇到底放了些什么东西在这里面.下面我开始破解这段代码.代码如下: 复制代码 代码如下: string str = "/wEPDwUKLTY4MTg1OTU4Nw9kFgJmD2QWAgIED2QWAgIDD2QWEGYPFgIeBFRle

  • ASP.NET笔记之页面跳转、调试、form表单、viewstate、cookie的使用说明

    1.页面跳转: (1 服务器传输 server.Transer(http://www.jb51.net);在定向到新页面后,还是会显示原来的URL,浏览器返回不会退回到原页面,历史记录也不会记录. 应用于完整的控制传输,例如安装向导. (2 超链接 (3 浏览器重定向 Redirect ,速度快,没有发送到服务器 (4 跨页发送 PostBackUrl="http://www.jb51.net" /> IsCrossPagePostBack用来判断是否为跨页提交 IsPostBa

  • asp.net 生成静态时的过滤viewstate的实现方法

    复制代码 代码如下: public static string GetSourceTextByUrl(string url) { WebRequest request = WebRequest.Create(url); request.Timeout = 200000;//20秒超时 WebResponse response = request.GetResponse(); Stream resStream = response.GetResponseStream(); StreamReader

  • asp.net 处理原文件中过长的viewstate代码

    复制代码 代码如下: public class XVPage : Page { static private DirectoryInfo _Dir; private DirectoryInfo Dir { get { if (_Dir == null) { _Dir = new DirectoryInfo(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "App_Data")); if (!_Dir.Exists) _Dir.Cr

  • C++实现删除txt文件中指定内容的示例代码

    默认明白C++的文件输入输出流 方法: 新建一个中间文件,逐行读取原文件(test.txt)的内容并写入到中间文件(temp.txt),遇到需要删除的内容则跳过. 再将中间文件的内容写入原文件,删除中间文件. fstream in("C:\\Users\\Administrator\\Desktop\\test.txt", ios::in);//原文件 fstream out("C:\\Users\\Administrator\\Desktop\\temp.txt"

  • python3获取文件中url内容并下载代码实例

    这篇文章主要介绍了python3获取文件中url内容并下载代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 #!/usr/bin/env python # -*- coding: utf-8 -*- # @Time : 2019-12-25 11:33 # @Author : Anthony # @Email : ianghont7@163.com # @File : get_video_audio_file.py import xlrd

  • java_IO向文件中写入和读取内容代码实例

    使用java中OutStream()向文件中写入内容 package Stream; import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStream; public class OutStreamDemo01 { public static void main(Str

  • Asp.net在ashx文件中处理Session问题解决方法

    今天做一个vb.net的登录实例,前台使用Ext中Ajax ,后台用ashx文件处理登录过程,并将用户储存在Session中总是出现在这个错误.  [NullReferenceException: 未将对象引用设置到对象的实例.] 从网上查了一下有以下几种原因: 1.ViewState 对象为Unll. 2.DateSet 空. 3.sql语句或Datebase的原因导致DataReader空. 4.声明字符串变量时未赋空值就应用变量. 5.未用new初始化对象. 6.Session对象为空.

  • asp 判断上传文件中是否存在危险代码

    复制代码 代码如下: <% function CheckFileContent(FileName) dim ClientFile,ClientText,ClientContent,DangerString,DSArray,AttackFlag,k set ClientFile=Server.CreateObject("Scripting.FileSystemObject") set ClientText=ClientFile.OpenTextFile(Server.MapPath

  • asp.net mvc 从数据库中读取图片的实现代码

    首先是创建一个类,继承于ActionResult,记住要引用System.Web.Mvc命名空间,如下: 复制代码 代码如下: public class ImageResult : ActionResult { public ImageFormat ContentType { get; set; } public Image image { get; set; } public string SourceName { get; set; } public ImageResult(string _

  • Asp.net 在三层架构中事务的使用实例代码

    接触3层也有一段时间了,了解水平一般,前段时间在想在三层中怎么使用事务呢,放在哪呢?Sqlherper ? DAL? BLL?.然后我就疯狂的百度,好几次都是未果(因为做的都是小项目,不用事务也关系不大),今天我再次查时,好好的看了csdn上的以讨论,http://topic.csdn.net/u/20091101/19/f21697d7-8f0c-4eb3-8e59-d0fe2f0b04b0.html,结合前辈和高手们的意见,自己改了一个出来.我的想法是将事务逻辑写在业务逻辑层,数据库的处理还

  • 在.ashx文件中获取cookies值实现代码

    创建 复制代码 代码如下: HttpCookie cookies = new HttpCookie("validate"); cookies["validate"] = validateNum; Response.AppendCookie(cookies); 获取 复制代码 代码如下: if (context.Request.Cookies["validate"] != null) { validate = context.Request.Coo

  • python脚本实现统计日志文件中的ip访问次数代码分享

    适用的日志格式: 106.45.185.214 - - [06/Aug/2014:07:38:59 +0800] "GET / HTTP/1.0" 200 10 "-" "-" 171.104.119.22 - - [06/Aug/2014:08:55:01 +0800] "GET / HTTP/1.0" 200 10 "-" "-" 27.31.238.242 - - [06/Aug/

随机推荐