为什么asp.net 的的页面有这么多隐藏域,里面有这么多内容这样对于一个网页读入的速度会不会很慢啊,,对于搜索会不会不好啊....唉,,,真搞不懂,,,,可能是新手吧,,,问的东西特别多
<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="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bDAyJENoZWNrQm94TGlzdDEkMQUfUmVwZWF0ZXIxJGN0bDAyJENoZWNrQm94TGlzdDEkMgUfUmVwZWF0ZXIxJGN0bDAyJENoZWNrQm94TGlzdDEkMwUfUmVwZWF0ZXIxJGN0bDAyJENoZWNrQm94TGlzdDEkNAUfUmVwZWF0ZXIxJGN0bDAyJENoZWNrQm94TGlzdDEkNQUfUmVwZWF0ZXIxJGN0bDAyJENoZWNrQm94TGlzdDEkNgUfUmVwZWF0ZXIxJGN0bDAyJENoZWNrQm94TGlzdDEkNwUfUmVwZWF0ZXIxJGN0bDAyJENoZWNrQm94TGlzdDEkOAUfUmVwZWF0ZXIxJGN0bDAyJENoZWNrQm94TGlzdDEkOQUgUmVwZWF0ZXIxJGN0bDAyJENoZWNrQm94TGlzdDEkMTAFIFJlcGVhdGVyMSRjdGwwMiRDaGVja0JveExpc3QxJDEwBR9SZXBlYXRlcjEkY3RsMDMkQ2hlY2tCb3hMaXN0MSQwBR9SZXBlYXRlcjEkY3RsMDMkQ2hlY2tCb3hMaXN0MSQxBR9SZXBlYXRlcjEkY3RsMDMkQ2hlY2tCb3hMaXN0MSQyBR9SZXBlYXRlcjEkY3RsMDMkQ2hlY2tCb3hMaXN0MSQzBR9SZXBlYXRlcjEkY3RsMDMkQ2hlY2tCb3hMaXN0MSQ0BR9SZXBlYXRlcjEkY3RsMDMkQ2hlY2tCb3hMaXN0MSQ1BR9SZXBlYXRlcjEkY3RsMDMkQ2hlY2tCb3hMaXN0MSQ2BR9SZXBlYXRlcjEkY3RsMDMkQ2hlY2tCb3hMaXN0MSQ3BR9SZXBlYXRlcjEkY3RsMDMkQ2hlY2tCb3hMaXN0MSQ4BR9SZXBlYXRlcjEkY3RsMDMkQ2hlY2tCb3hMaXN0MSQ5BSBSZXBlYXRlcjEkY3RsMDMkQ2hlY2tCb3hMaXN0MSQxMAUgUmVwZWF0ZXIxJGN0bDAzJENoZWNrQm94TGlzdDEkMTAFH1JlcGVhdGVyMSRjdGwwNCRDaGVja0JveExpc3QxJDAFH1JlcGVhdGVyMSRjdGwwNCRDaGVja0JveExpc3QxJDEFH1JlcGVhdGVyMSRjdGwwNCRDaGVja0JveExpc3QxJDIFH1JlcGVhdGVyMSRjdGwwNCRDaGVja0JveExpc3QxJDMFH1JlcGVhdGVyMSRjdGwwNCRDaGVja0JveExpc3QxJDQFH1JlcGVhdGVyMSRjdGwwNCRDaGVja0JveExpc3QxJDUFH1JlcGVhdGVyMSRjdGwwNCRDaGVja0JveExpc3QxJDYFH1JlcGVhdGVyMSRjdGwwNCRDaGVja0JveExpc3QxJDcFH1JlcGVhdGVyMSRjdGwwNCRDaGVja0JveExpc3QxJDgFH1JlcGVhdGVyMSRjdGwwNCRDaGVja0JveExpc3QxJDkFIFJlcGVhdGVyMSRjdGwwNCRDaGVja0JveExpc3QxJDEwBSBSZXBlYXRlcjEkY3RsMDQkQ2hlY2tCb3hMaXN0MSQxMQUgUmVwZWF0ZXIxJGN0bDA0JENoZWNrQm94TGlzdDEkMTEFH1JlcGVhdGVyMSRjdGwwNSRDaGVja0JveExpc3QxJDAFH1JlcGVhdGVyMSRjdGwwNSRDaGVja0JveExpc3QxJDEFH1JlcGVhdGVyMSRjdGwwNSRDaGVja0JveExpc3QxJDIFH1JlcGVhdGVyMSRjdGwwNSRDaGVja0JveExpc3QxJDMFH1JlcGVhdGVyMSRjdGwwNSRDaGVja0JveExpc3QxJDQFH1JlcGVhdGVyMSRjdGwwNSRDaGVja0JveExpc3QxJDUFH1JlcGVhdGVyMSRjdGwwNSRDaGVja0JveExpc3QxJDYFH1JlcGVhdGVyMSRjdGwwNSRDaGVja0JveExpc3QxJDcFH1JlcGVhdGVyMSRjdGwwNSRDaGVja0JveExpc3QxJDgFH1JlcGVhdGVyMSRjdGwwNSRDaGVja0JveExpc3QxJDkFIFJlcGVhdGVyMSRjdGwwNSRDaGVja0JveExpc3QxJDEwBSBSZXBlYXRlcjEkY3RsMDUkQ2hlY2tCb3hMaXN0MSQxMQUgUmVwZWF0ZXIxJGN0bDA1JENoZWNrQm94TGlzdDEkMTIFIFJlcGVhdGVyMSRjdGwwNSRDaGVja0JveExpc3QxJDEzBSBSZXBlYXRlcjEkY3RsMDUkQ2hlY2tCb3hMaXN0MSQxMwUfUmVwZWF0ZXIxJGN0bDA2JENoZWNrQm94TGlzdDEkMAUfUmVwZWF0ZXIxJGN0bDA2JENoZWNrQm94TGlzdDEkMQUfUmVwZWF0ZXIxJGN0bDA2JENoZWNrQm94TGlzdDEkMgUfUmVwZWF0ZXIxJGN0bDA2JENoZWNrQm94TGlzdDEkMwUfUmVwZWF0ZXIxJGN0bDA2JENoZWNrQm94TGlzdDEkNAUfUmVwZWF0ZXIxJGN0bDA2JENoZWNrQm94TGlzdDEkNQUfUmVwZWF0ZXIxJGN0bDA2JENoZWNrQm94TGlzdDEkNgUfUmVwZWF0ZXIxJGN0bDA2JENoZWNrQm94TGlzdDEkNwUfUmVwZWF0ZXIxJGN0bDA2JENoZWNrQm94TGlzdDEkOAUfUmVwZWF0ZXIxJGN0bDA2JENoZWNrQm94TGlzdDEkOAUfUmVwZWF0ZXIxJGN0bDA3JENoZWNrQm94TGlzdDEkMAUfUmVwZWF0ZXIxJGN0bDA3JENoZWNrQm94TGlzdDEkMQUfUmVwZWF0ZXIxJGN0bDA3JENoZWNrQm94TGlzdDEkMgUfUmVwZWF0ZXIxJGN0bDA3JENoZWNrQm94TGlzdDEkMwUfUmVwZWF0ZXIxJGN0bDA3JENoZWNrQm94TGlzdDEkNAUfUmVwZWF0ZXIxJGN0bDA3JENoZWNrQm94TGlzdDEkNQUfUmVwZWF0ZXIxJGN0bDA3JENoZWNrQm94TGlzdDEkNgUfUmVwZWF0ZXIxJGN0bDA3JENoZWNrQm94TGlzdDEkNwUfUmVwZWF0ZXIxJGN0bDA3JENoZWNrQm94TGlzdDEkOAUfUmVwZWF0ZXIxJGN0bDA3JENoZWNrQm94TGlzdDEkOQUgUmVwZWF0ZXIxJGN0bDA3JENoZWNrQm94TGlzdDEkMTAFIFJlcGVhdGVyMSRjdGwwNyRDaGVja0JveExpc3QxJDExBSBSZXBlYXRlcjEkY3RsMDckQ2hlY2tCb3hMaXN0MSQxMgUgUmVwZWF0ZXIxJGN0bDA3JENoZWNrQm94TGlzdDEkMTIFH1JlcGVhdGVyMSRjdGwwOCRDaGVja0JveExpc3QxJDAFH1JlcGVhdGVyMSRjdGwwOCRDaGVja0JveExpc3QxJDEFH1JlcGVhdGVyMSRjdGwwOCRDaGVja0JveExpc3QxJDEFH1JlcGVhdGVyMSRjdGwwOSRDaGVja0JveExpc3QxJDAFH1JlcGVhdGVyMSRjdGwwOSRDaGVja0JveExpc3QxJDEFH1JlcGVhdGVyMSRjdGwwOSRDaGVja0JveExpc3QxJDIFH1JlcGVhdGVyMSRjdGwwOSRDaGVja0JveExpc3QxJDMFH1JlcGVhdGVyMSRjdGwwOSRDaGVja0JveExpc3QxJDQFH1JlcGVhdGVyMSRjdGwwOSRDaGVja0JveExpc3QxJDUFH1JlcGVhdGVyMSRjdGwwOSRDaGVja0JveExpc3QxJDYFH1JlcGVhdGVyMSRjdGwwOSRDaGVja0JveExpc3QxJDcFH1JlcGVhdGVyMSRjdGwwOSRDaGVja0JveExpc3QxJDgFH1JlcGVhdGVyMSRjdGwwOSRDaGVja0JveExpc3QxJDkFIFJlcGVhdGVyMSRjdGwwOSRDaGVja0JveExpc3QxJDEwBSBSZXBlYXRlcjEkY3RsMDkkQ2hlY2tCb3hMaXN0MSQxMQUgUmVwZWF0ZXIxJGN0bDA5JENoZWNrQm94TGlzdDEkMTIFIFJlcGVhdGVyMSRjdGwwOSRDaGVja0JveExpc3QxJDEy0eCB4tY7isctb/wrjgip4BBcAUE=" />

解决方案 »

  1.   

    你用的是服务端(Runat="Server")的控件吧,
    人家用的是客户端的控件
    BLOG里有说这个问题是“Asp.Net”的一个安全隐患。   
      原来使用“客户端的控件”就可以解决该问题,如果不使用“客户端控件”怎么提交按钮事件,
    ViewState机制是asp.net的重要特点之一自动视图状态管理是服务器控件的功能,该功能使服务器控件可以在往返过程上重新填充它们的属性值(您不需要编写任何代码)。但是,因为服务器控件的视图状态在隐藏的窗体字段中往返于服务器,所以该功能确实会对性能产生影响。您应该知道在哪些情况下视图状态会有所帮助,在哪些情况下它影响页的性能。例如,如果您将服务器控件绑定到每个往返过程上的数据,则将用从数据绑定操作获得的新值替换保存的视图状态。在这种情况下,禁用视图状态可以节省处理时间。     
      默认情况下,为所有服务器控件启用视图状态。若要禁用视图状态,请将控件的   EnableViewState   属性设置为   false,如下面的   DataGrid   服务器控件示例所示。     
      <asp:datagrid   EnableViewState="false"   datasource="..."   runat="server"/>
    ViewState是asp.net自动保存状态用的,你可以选择禁用 
      

  2.   

    你列出来的的也不过是一个隐藏于嘛,这种东西就算有100多个,也不一定算“多”啊。一篇html代码中,你喜欢看到的html元素有几千个都不嫌多,看到一个不喜欢的就嫌多了吗?如果你不嫌“多”,而是嫌“大”,实际上我也嫌大,所以我在帖子http://topic.csdn.net/u/20081130/17/f122ba8d-00e7-47e7-9623-7b9a06a6dd48.html中回复了一段代码。既然我把这个代码作为所有page的父类,你可以看出它有多么重要。
      

  3.   

    谢谢sp1234,,
    呵呵,,,一只放出来一个,,其实很多,,很大,,,所以我没有放出来,,,我会看看你http://topic.csdn.net/u/20081130/17/f122ba8d-00e7-47e7-9623-7b9a06a6dd48.html
    blog的
      

  4.   

    不用特别地看回复中的内容,而且你一时半会(或者可能在没有讲解的情况下在一年之内)也不能完全看懂。我那里贴的是一个完整的class代码,因此你创建一个cs文件,然后把代码贴进去,再把你认为ViewState巨大的页面的父类用原来的继承于Page改为继承自这个新的class,应该用2分钟就可以完成整个改造,看到效果了。
      

  5.   


    using System;
    using System.IO;
    using System.Web.UI;public class XVPage : Page
    {
        static private DirectoryInfo _Dir;    private DirectoryInfo Dir
        {
            get
            {
                if (_Dir == null)
                {
                    _Dir = new DirectoryInfo(Path.Combine(DomainBase.Extention.BaseDirPath, "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 = 反序列化对象((string)ps.ControlState);
            if (ps.ViewState != null)
                ps.ViewState = 反序列化对象((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 = 序列化对象(ps.ControlState);
            if (ps.ViewState != null)
                ps.ViewState = 序列化对象(ps.ViewState);
            ps.Save();
        }    private object 反序列化对象(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 序列化对象(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
                    {
                    }
        }
    }请问这个类怎么调用啊,,有没有例子...小弟是新手
      

  6.   

    你新建的页面不要继承Page,继承这个类
      

  7.   

    我来回答你的问题中的两点:1. 实际上我认为下载速度并不是很大的问题。国内的adsl的下载速度可以达到每秒100KBytes以上,而且下载下来的这片数据又不参与页面上的可见控件的解析计算,因此下载速度并不一定是问题。反倒是,这片内容总是被作为post参数而丢回服务器端,而adsl上行速度只有下行速度的八分之一(或者比例高一点),因此我是担心交互操作时(特别是使用了updatepanel时)向服务器端提交的速度慢而不是担心“网页读入”的速度慢。2. 我不知道现在有多少搜索引擎是仅仅读取网页上一少部分源代码来进行分析的。显然,例如如果搜索引擎仅仅读取网页的前面的10K字节,那么这个内容显然影响搜索引擎工作。但是,所谓SEO“技术”90%以上都是不实的废品,我不知道有哪一个我们关心的搜索引擎现在是仅仅读取网页的前面10K(或者是其它比较少量的)字节的,所以这个也不好说。不过,已经无所谓了,我已经因为其它原因,而把客户端的这个数据改为只有很短很短的一个内容了。
      

  8.   

    去掉<form>标签里的runat="server",问题解决。
    不过所有.net控件(即runat="server"的控件)你都用不了了。
      

  9.   


    对!打开你的aspx的codebehind代码页,你可以看到类似using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;public partial class Login_Default : System.Web.UI.Page的代码,把这个 System.Web.UI.Page 父类改为 XVPage 即可。而如果你有自己的Page父类,让你的父类从它继承就可以了。如果你不是使用code-behind代码(没有后台的partial class代码),那么直接在aspx上设置inherits属性,例如顶部第一行为:<%@ Page Language="C#" Inherits="XVPage" %>
      

  10.   

    SEO“技术”还是有的,,,但是没网上吹的那么神而己,,,但是一个网站,,经过优化,,和没经过优化,,,在排名真的有很大的区别的!
      

  11.   

    为什么会出这个错的啊
    编译错误 
    说明: 在编译向该请求提供服务所需资源的过程中出现错误。请检查下列特定错误详细信息并适当地修改源代码。 编译器错误消息: CS0103: 当前上下文中不存在名称“DomainBase”源错误: 行 21:             if (_Dir == null)
    行 22:             {
    行 23:                 _Dir = new DirectoryInfo(Path.Combine(DomainBase.Extention.BaseDirPath, "App_Data"));
    行 24:                 if (!_Dir.Exists)
    行 25:                     _Dir.Create();
     
    我的前台页面是<%@ Page Language="C#" AutoEventWireup="true" CodeFile="repeater.aspx.cs" Inherits="repeater" %>后台是:public partial class repeater : XVpage
    然后在app_Code做了一个叫XVpage.cs的类
    using System;
    using System.IO;
    using System.Web.UI;public class XVPage : Page
    {
        static private DirectoryInfo _Dir;    private DirectoryInfo Dir
        {
            get
            {
                if (_Dir == null)
                {
                    _Dir = new DirectoryInfo(Path.Combine(DomainBase.Extention.BaseDirPath, "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 = 反序列化对象((string)ps.ControlState);
            if (ps.ViewState != null)
                ps.ViewState = 反序列化对象((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 = 序列化对象(ps.ControlState);
            if (ps.ViewState != null)
                ps.ViewState = 序列化对象(ps.ViewState);
            ps.Save();
        }    private object 反序列化对象(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 序列化对象(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
                    {
                    }
        }
    }
      

  12.   


    靠网站开发者个人进行SEO的效果非常非常难看到“很大的区别”,需要花钱给“专业”公司人为“创造”排名的。至于说根本不是靠技术公平性的“竞价排名”,则更不用说开发者自己SEO啦,据说百度90%的利润是来自于竞价排名的。
      

  13.   


    哦,那是另一个class,我在那里去读取web.config等环境参数来看看用户有没有另外手动设置根目录。这里,你可以直接改为 AppDomain.CurrentDomain.BaseDirectory。
      

  14.   

            var _Dir = new DirectoryInfo(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "App_Data"));这样,总是在你的网站的应用程序目录下去查找 App_Data 子目录,这也没有任何运行错误。有时候,例如我的生产服务器上,将数据库放在网站以外,所以我在web.config中可以配置目录。所以使用一个工具方法来判断数据库目录。
      

  15.   


    回到ASP年代了
    还要.NET干什么尼?
    呵呵
      

  16.   

    先看看微软的viewstage,也就是视图状态,明白它是干什么就行,明白了,就知道什么时候该用,什么时候可以关闭它
      

  17.   

    无法将类型为“System.Collections.Specialized.HybridDictionary”的对象强制转换为类型“System.String”。 
    说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.InvalidCastException: 无法将类型为“System.Collections.Specialized.HybridDictionary”的对象强制转换为类型“System.String”。源错误: 
    行 39:         ps.Load();
    行 40:         if (ps.ControlState != null)
    行 41:             ps.ControlState = 反序列化对象((string)ps.ControlState);
    行 42:         if (ps.ViewState != null)
    行 43:             ps.ViewState = 反序列化对象((string)ps.ViewState);
     源文件: d:\chinawl\App_Code\XVPage.cs    行: 41 还是出错,,,
      

  18.   

    ViewState 有时候还是很有用的
      

  19.   

    无法将类型为“System.Collections.Specialized.HybridDictionary”的对象强制转换为类型“System.String”。 
    说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.InvalidCastException: 无法将类型为“System.Collections.Specialized.HybridDictionary”的对象强制转换为类型“System.String”。 源错误: 
    行 39:        ps.Load(); 
    行 40:        if (ps.ControlState != null) 
    行 41:            ps.ControlState = 反序列化对象((string)ps.ControlState); 
    行 42:        if (ps.ViewState != null) 
    行 43:            ps.ViewState = 反序列化对象((string)ps.ViewState); 
    源文件: d:\chinawl\App_Code\XVPage.cs    行: 41 还是出错,,,
      

  20.   


    遇到 ps.ControlState 无法转换为 string 还真是诡异呢!你使用的某一个非正式由asp.net项目组发布和技术支持的客户端(javascript端)的扩展组件它大概很“狠”地在客户端去修改了隐藏域中的数据。如果还是使用它,你可以尝试将         if (ps.ControlState != null)
                ps.ControlState = 反序列化对象((string)ps.ControlState);
    与        if (ps.ControlState != null)
                ps.ControlState = 序列化对象(ps.ControlState);注释掉。毕竟,内容巨大是ViewState部分,我们可以对ControlState部分不做处理仍然丢到客户端去。如果注释掉这两行代码仍然出现同样问题,你最好先试试找出是哪一个第三方组件的问题。
      

  21.   

    我的web.config是这样的,,,,用了一个ajaxpro这个ajax控件
    <?xml version="1.0"?>
    <!-- 
        注意: 除了手动编辑此文件以外,您还可以使用 
        Web 管理工具来配置应用程序的设置。可以使用 Visual Studio 中的
         “网站”->“Asp.Net 配置”选项。
        设置和注释的完整列表在 
        machine.config.comments 中,该文件通常位于 
        \Windows\Microsoft.Net\Framework\v2.x\Config 中
    -->
    <configuration>
    <configSections>
    <sectionGroup name="system.web.extensions" type="System.Web.Configuration.SystemWebExtensionsSectionGroup, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
    <sectionGroup name="scripting" type="System.Web.Configuration.ScriptingSectionGroup, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
    <section name="scriptResourceHandler" type="System.Web.Configuration.ScriptingScriptResourceHandlerSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication"/>
    <sectionGroup name="webServices" type="System.Web.Configuration.ScriptingWebServicesSectionGroup, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
    <section name="jsonSerialization" type="System.Web.Configuration.ScriptingJsonSerializationSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="Everywhere"/>
    <section name="profileService" type="System.Web.Configuration.ScriptingProfileServiceSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication"/>
    <section name="authenticationService" type="System.Web.Configuration.ScriptingAuthenticationServiceSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication"/>
    <section name="roleService" type="System.Web.Configuration.ScriptingRoleServiceSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication"/>
            </sectionGroup>
          </sectionGroup>
        </sectionGroup>
      </configSections>
       <appSettings>
    <add key="connsql" value="Server=.;DataBase=chinawl;Uid=sa;Pwd=sa"/>
    </appSettings>
    <connectionStrings>
      <add name="chinawlConnectionString" connectionString="Server=.;DataBase=chinawl;Uid=sa;Pwd=sa"
       providerName="System.Data.SqlClient" />
     </connectionStrings>
    <system.web>
    <!-- 
                设置 compilation debug="true" 将调试符号插入
                已编译的页面中。但由于这会 
                影响性能,因此只在开发过程中将此值 
                设置为 true。
            -->  
    <compilation debug="true">
    <assemblies>
    <add assembly="System.Design, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/>
    <add assembly="System.Core, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
    <add assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
    <add assembly="System.Xml.Linq, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
    <add assembly="System.Data.DataSetExtensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
          </assemblies></compilation>
    <!--
                通过 <authentication> 节可以配置 ASP.NET 使用的 
                安全身份验证模式,
                以标识传入的用户。 
            -->
    <authentication mode="Windows"/>
    <!--
                如果在执行请求的过程中出现未处理的错误,
                则通过 <customErrors> 节可以配置相应的处理步骤。具体说来,
                开发人员通过该节可以配置
                要显示的 html 错误页
                以代替错误堆栈跟踪。        <customErrors mode="RemoteOnly" defaultRedirect="GenericErrorPage.htm">
                <error statusCode="403" redirect="NoAccess.htm" />
                <error statusCode="404" redirect="FileNotFound.htm" />
            </customErrors>
            -->
    <pages>
    <controls>
    <add tagPrefix="asp" namespace="System.Web.UI" assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
    <add tagPrefix="asp" namespace="System.Web.UI.WebControls" assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/></controls></pages>
    <httpHandlers>
          <add verb="POST,GET" path="ajaxpro/*.ashx" type="AjaxPro.AjaxHandlerFactory, AjaxPro.2"/>
          <remove verb="*" path="*.asmx"/>
          <add verb="*" path="*.asmx" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
          <add verb="*" path="*_AppService.axd" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
          <add verb="GET,HEAD" path="ScriptResource.axd" validate="false" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
        </httpHandlers>
    <httpModules>
    <add name="ScriptModule" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
        </httpModules></system.web>
    <system.codedom>
    <compilers>
    <compiler language="c#;cs;csharp" extension=".cs" type="Microsoft.CSharp.CSharpCodeProvider,System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" warningLevel="4">
    <providerOption name="CompilerVersion" value="v3.5"/>
    <providerOption name="WarnAsError" value="false"/></compiler>
    <compiler language="vb;vbs;visualbasic;vbscript" extension=".vb" type="Microsoft.VisualBasic.VBCodeProvider, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" warningLevel="4">
    <providerOption name="CompilerVersion" value="v3.5"/>
    <providerOption name="OptionInfer" value="true"/>
    <providerOption name="WarnAsError" value="false"/></compiler></compilers></system.codedom>
    <system.webServer>
    <validation validateIntegratedModeConfiguration="false"/>
    <modules>
    <remove name="ScriptModule"/>
    <add name="ScriptModule" preCondition="managedHandler" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/></modules>
    <handlers>
    <remove name="WebServiceHandlerFactory-Integrated"/>
    <remove name="ScriptHandlerFactory"/>
    <remove name="ScriptHandlerFactoryAppServices"/>
    <remove name="ScriptResource"/>
    <add name="ScriptHandlerFactory" verb="*" path="*.asmx" preCondition="integratedMode" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
    <add name="ScriptHandlerFactoryAppServices" verb="*" path="*_AppService.axd" preCondition="integratedMode" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
    <add name="ScriptResource" verb="GET,HEAD" path="ScriptResource.axd" preCondition="integratedMode" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/></handlers></system.webServer>
    <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
    <dependentAssembly>
    <assemblyIdentity name="System.Web.Extensions" publicKeyToken="31bf3856ad364e35"/>
    <bindingRedirect oldVersion="1.0.0.0-1.1.0.0" newVersion="3.5.0.0"/></dependentAssembly>
    <dependentAssembly>
    <assemblyIdentity name="System.Web.Extensions.Design" publicKeyToken="31bf3856ad364e35"/>
    <bindingRedirect oldVersion="1.0.0.0-1.1.0.0" newVersion="3.5.0.0"/></dependentAssembly></assemblyBinding></runtime></configuration>
      

  22.   

    忘了说,,,我的是vs2008的因为网站优化问题,,,所以要把viewstat减少,,,要对搜索引擎不友好
      

  23.   

    不知是不是vs2008的问题
    我把web.config改成这样就可以了,,,一样用ajaxpro控件<?xml version="1.0"?>
    <!-- 
        注意: 除了手动编辑此文件以外,您还可以使用 
        Web 管理工具来配置应用程序的设置。可以使用 Visual Studio 中的
         “网站”->“Asp.Net 配置”选项。
        设置和注释的完整列表在 
        machine.config.comments 中,该文件通常位于 
        \Windows\Microsoft.Net\Framework\v2.x\Config 中
    -->
    <configuration>
    <appSettings>
    <add key="conn" value="Server=.;DataBase=chinawl;Uid=sa;Pwd=sa"/>
    </appSettings>
    <connectionStrings/>
      <system.web>
        <customErrors mode="Off"/>
      </system.web>
      <system.web>

    <!-- 
                设置 compilation debug="true" 将调试符号插入
                已编译的页面中。但由于这会 
                影响性能,因此只在开发过程中将此值 
                设置为 true。
            -->
    <compilation debug="true">
    <assemblies>
    <add assembly="System.Design, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/></assemblies></compilation>
    <!--
                通过 <authentication> 节可以配置 ASP.NET 使用的 
                安全身份验证模式,
                以标识传入的用户。 
            -->    <httpHandlers>
          <add verb="POST,GET" path="ajaxpro/*.ashx" type="AjaxPro.AjaxHandlerFactory, AjaxPro.2"/>
          
        </httpHandlers>
    <authentication mode="Windows"/>
    <!--
                如果在执行请求的过程中出现未处理的错误,
                则通过 <customErrors> 节可以配置相应的处理步骤。具体说来,
                开发人员通过该节可以配置
                要显示的 html 错误页
                以代替错误堆栈跟踪。        <customErrors mode="RemoteOnly" defaultRedirect="GenericErrorPage.htm">
                <error statusCode="403" redirect="NoAccess.htm" />
                <error statusCode="404" redirect="FileNotFound.htm" />
            </customErrors>
            -->
    </system.web>
    </configuration>
      

  24.   

    有viewstate也不怕啊,只是你看着不舒服了
      

  25.   

    未能找到文件“E:\work\chenglong\wwwroot\App_Data\ViewState\633644332836202266”。 行 69:         string file = Path.Combine(Dir.FullName, stateID);
    行 70:         if (stateStr == null)
    行 71:             stateStr = File.ReadAllText(file);
    行 72:         else
    行 73:             Cache.Remove(stateID);我用aspnetpager做分页跳转时发生上面的错误。查了好久没有找到原因。我是菜鸟。请指教。
      

  26.   


    那个优化师说,,,这样没用的代码太多了,,,必须去掉,,,然后老板下order了
      

  27.   

    我没有用过aspnetpager,不太了解它分页跳转的过程。不知道,是在页面上等待1、2分钟然后每一次点击分页跳转是都报这个错误,还是等待超过20分钟以上再点击时报错。如果是超过20分钟,XVPage中最后有自动清除超过20分钟的临时文件的代码,可以把20分钟改得更长一些。而另外的情况我根据这里的叙述一时也判断不出,因为我用在非常复杂的ajax程序中,用了许多asp.net控件以及我自己写的组件,还没有发现这个异常报告,并且我的程序是自动化测试的在我不干预的情况下会模拟客户的点击、录入等操作对数据绑定和分页等功能也是每天运行上千遍,目前还没有发现这个异常。当然,我的列表程序基本都是UpdataPanel中嵌入ListView控件,它有自己的两套内置分页控件以及一套自定义分页框架。分页确实是最容易发现状态管理问题的地方。你可能发现除了你的分页功能,其它几乎所有控件都好用。很奇怪的事情!但是我相信这和可能发生。你可以试试别的分页是不是也同样出错,然后再分析一下你的分页有什么特别之处。如果可能在查出原因之后,请写一个ascx用户控件的例子来说明如何制造出这个“文件不存在”的异常,我看看XVPage这段代码应该如何修改。aspnetpager放在updatepanel、嵌套在FormView中之类的时候,有异常吗?或许(只是或许)它有一点不兼容。