• SharePoint对象模型与ViewState



    ViewState对于大家来说,应该是一点都不陌生的。虽然在ASP.NET中到处可见它的踪迹,但是,我却很少使用它。
    近日,在开发WebPart时,为了避免每一次刷新页面都要重新获取同一个SPList,因此,我使用了ViewState存储
    SPList对象,但是很不幸的是,编译时完全正常,但是到使用时,却很不给面子的一直弹“发生意外错误”。对于这个问题的解决,我经历了如下几步,希望对大家有所帮助:
    Step1: 我跟踪调试WebPart,直到该WebPart的PreRender事件函数执行完毕,就会导致页面意外错误,而且无法再跟踪到
               Render中(因为我的代码中没有重写SaveViewState函数)。
               联想到PreRender事件之后,应该执行的是保存ViewState(即SaveState),而我的WebPart中只有SPList这里用了
               ViewState,那问题多半出在这里了,但是,具体是什么错呢?没辙,因为我跟不进去。
    Step2:  默认情况下,SharePoint出错显示的都是友好信息,而且友好到您基本上无法明白到底出什么错。
                很郁闷的是,一般情况下,我建一个站点,都会更改web.config ,让它显示详细的错误信息,但是,部署webpart
                的这个站点,我偏偏没有更改!
    Step3:   更改web.config,让SharePoint能显示更详细的错误信息:
                 1、 将<SafeMode ... CallStack="false" ...... AllowPageLevelTrace="false">中的CallStackAllowPageLevelTrace的属性设置为“true”。
                 2、<customErrors mode="On" />的mode改为"Off"
    Step4:  再次运行,就得到详细的错误信息:SPList没有被标记为可序列化!
    ------------------------
    至此,才明白出错以及为什么跟不进Render方法的原因,原来是要保存SPList时,无法将对象序列化。
    注:ViewState存储的对象需要是可序列化的。
    ------------------------
    这么一个错误,道道还是不少,希望对大家有用~~
  • 相关阅读:
    iptables一次性封多个ip,使用ipset 工具
    计算机网络知识整理
    SpringBoot启动流程及其原理
    CAP与Base理论
    Java7与Java8中的HashMap和ConcurrentHashMap知识点总结
    用chrome浏览器进行前端debug和停止debug
    Java synchronized实现原理总结和偏量锁、轻量锁、重量锁、自旋锁
    WIN10笔记本屏幕亮度无法调节,一直是最高亮度
    Win10任务栏卡死解决方法
    ClassLoader类加载器 & Java类加载机制 & 破坏双亲委托机制
  • 原文地址:https://www.cnblogs.com/McJeremy/p/1560918.html
Copyright © 2020-2023  润新知