MOSS2007匿名调查列表使用分页符导致的错误分析

最近同事在用MOSS2007做匿名调查问卷的时候,在问卷中插入分页符,每次匿名用户完成问卷时都会弹出验证框,在验证框内输入有权限的用户名、密码,仍然出现错误页面。经过一番努力,发现了问题的原因,总结如下:

  1. 正常情况:
  • MOSS2007站点启用匿名(如何启用匿名,可参考:http://stynzf.blogbus.com/logs/10155165.html
  • 新建了一个调查列表,设置几个问题(注意:先不插入任何分页符),并对调查列表单独启用匿名,并授予匿名用户修改、删除、查看的权限。方法如下:调查设置>权限和管理>此调查的权限>操作>编辑权限(点击确定)>操作>匿名设置
  • 现在匿名用户可以进行问卷调查的填写提交了,如下图所示:

    MOSS2007匿名调查列表使用分页符导致的错误分析_第1张图片

    图1 匿名用户填写调查表

     

    MOSS2007匿名调查列表使用分页符导致的错误分析_第2张图片

    图2 匿名用户的调查问卷结果(作者显示为匿名)

 

  1. 出错情况:
  • 对于上诉匿名列表,以管理员登陆,在任意问题之间插入一个分页符,如下图所示:

    MOSS2007匿名调查列表使用分页符导致的错误分析_第3张图片

    图3 调查表中插入分页符

     

  • 重新以匿名方式进入调查表,填写调查表
  1. 填写分页符前的调查表没有任何问题,填写完成后点击下一页,如下图,

MOSS2007匿名调查列表使用分页符导致的错误分析_第4张图片

图4  匿名填写分页符前的调查

 

  1. 在图4中点击下一步,继续填写分页符后的调查,填写完成后点击完成,如下图 :

MOSS2007匿名调查列表使用分页符导致的错误分析_第5张图片

图5  匿名填写分页符后的调查,并完成

 

  1. 这个时候,问题来了,当在图5中点击完成的时候,弹出了Windows验证框,如下图所示:

MOSS2007匿名调查列表使用分页符导致的错误分析_第6张图片

图6  匿名调查列表加入分页符 

 

  1. 输入正确的有权限的用户名、密码,出现错误页面,如下图所示:

MOSS2007匿名调查列表使用分页符导致的错误分析_第7张图片

图7 错误页面

 

  1. 错误原因:
  • 在了解错误原因前我们先来了解下调查列表分页符的原理:
  1. 答复一个带有分页符的调查表问卷,注意看刚打开的调查表的URL,我们发现所请求的aspx页面为:NewForm.aspx(很正常哦),如下图所示:

MOSS2007匿名调查列表使用分页符导致的错误分析_第8张图片

图8 新答复调查表的URL

 

 

  1. 在图8页面中点击下一页,再注意看URL,请求的.aspx页面变成了EditForm.aspx(列表编辑页面),如下图:

MOSS2007匿名调查列表使用分页符导致的错误分析_第9张图片

图9 分页符后调查表URL

 

  1. 现在,我们应该很清楚分页符的工作原理了,答复带分页符的调查列表的时候,首先调用的是新建页面。而当点击下一页时,其实是先做了保存操作,再对正在创建的条目进行编辑操作。其实一个带分页符的调查答复是包含了新建、保存、编辑、保存等多个操作。

 

  • 知道了分页符的原理,我们再看下匿名调查列表的 默认项目级权限设置,打开调查列表的 列表设置>高级设置,我们看到项目级权限是这样设置的: "读取权限>指定用户可以读取的答复:所有答复""编辑权限>指定用户可以编辑的答复:仅自己的项目" ,如下图所示:

    MOSS2007匿名调查列表使用分页符导致的错误分析_第10张图片

    图 10 默认项目级权限设置

     

  • 我们再看下匿名调查表的创建者,发现为空(如下图所示):

    MOSS2007匿名调查列表使用分页符导致的错误分析_第11张图片

    图11 匿名调查表创建者

     

  • 根据以上观察,我们知道了原因:
  1. 当答复调查问卷中带分页符的问题时,当点击下一页时,其实是对该调查列表条目进行编辑操作;由于调查表默认设置了仅能编辑自己创建的答复、并且启用了匿名编辑(对于匿名答复而言,系统是不记录创建者的),因此系统认为匿名用户不是当前列表条目的作者,因此无法编辑,并弹出Windows验证框以要求有权限的用户 。
  2. 而不论输入什么用户和密码,该用户都不是当前正在调查列表条目的作者(因为创建者为空),因此会报错!

     

  1. 解决方法
  • 如果还想用sharepoint默认的调查列表做匿名调查的话,则有如下方法:
  1. 将项目级权限的编辑权限设置为"指定用户可编辑的答复:所有答复" (但这样任何人都可以编辑任何项目)
  2. 取消分页符,直接在一页显示吧。(哎,没办法,谁叫sharepoint用这样的方式实现分页呢)
  • 要么就自己重新实现新建答复,不采取保存、编辑的方式 。

5、其它:

    其实我们 发现,对于其他列表如果启用匿名(匿名具有编辑权限)并且项目级权限设置为"指定用户可编辑的答复:仅自己的项目",那在匿名用户编辑"自己"创建的列表时都是会弹出验证窗口的。

不光分页,调查表的逻辑分支也会出现相同问题,因为他们实现原理一样(新建、保存、编辑、保存)。

你可能感兴趣的:(2007)