zoukankan      html  css  js  c++  java
  • 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存储的对象需要是可序列化的。
    ------------------------
    这么一个错误,道道还是不少,希望对大家有用~~
  • 相关阅读:
    [Andriod]计时器实现-基于线程消息机制三种方式
    [Android]语音识别中出现的问题和经验
    [工具]SublimeText编辑器一些设置-C++编译运行
    [工具]SublimeText编辑器一些设置-JAVA编译运行
    [HTML5]网页代码编辑器
    [Jetty]基于Java Servlet的支持WebSocket的服务器
    [网络包抓取分析软件]Wireshark
    [网络包抓取分析软件]Fiddler
    [JAVA]在Eclipse中使用JUnit4进行单元测试-1
    [JAVA]在Eclipse中使用JUnit4进行单元测试-2
  • 原文地址:https://www.cnblogs.com/McJeremy/p/1560918.html
Copyright © 2011-2022 走看看