代码改变世界

SharePoint 2007 Choice Field 不能更新

2011-06-13 13:17  努力学习的小熊  阅读(921)  评论(0编辑  收藏  举报

          一个困扰我很久的问题,现在绕开了问题根源暂时解决掉了用户的使用,但是并没有解决实际的问题,并且这个问题在其他的环境里面不能再现,希望看到的朋友提供一些信息支持,先谢谢各位!

          问题描述:一台SharePoint前端服务器,所有的SiteCollection下的所有List的所有Field均不能进行Field Settings的Modify。修改字段的设置信息后,甚至不修改直接点击更新按钮会出现错误提示并且不能修改成功。

          Cannot complete this action.

          Please try again.

          初步判断为一个共同的问题,不是某一列表或者某一字段而产生的特殊问题,那么解决的地方应该不在这个列表上。

         

          通过修改SharePoint的web.config文件配置信息,获取更多的错误信息。

          需要修改两个地方:

          1.找到这个SafeMode配置节点,修改他的CallStack属性,设置为true

          <SafeMode MaxControls="200" CallStack="true" DirectFileDependencies="10" TotalFileDependencies="50" AllowPageLevelTrace="false">

          2.找到customErrors节点,设置mode属性为Off

          <customErrors mode="Off" />

         

          获取到的更多的错误信息:

          at Microsoft.SharePoint.Library.SPRequestInternalClass.UpdateField(String bstrUrl, String bstrListName, String bstrXML)

          at Microsoft.SharePoint.Library.SPRequest.UpdateField(String bstrUrl, String bstrListName, String bstrXML)

          

 

          通过这些错误信息我并没有找到什么解决办法。客户需求是在一个ChoiceField上增加一个选项,我通过页面操作和代码操作并通过提升权限都做过尝试,均不能达到目的,而且错误信息提示的内容都一样。最后通过其他办法解决掉客户需求的问题,但是没有解决根本的问题。我还发现了一个比较特殊的问题。这个网站是一个TeamSite,列表模板是基于Task创建并修改出来的,拥有自己的一个内容类型(暂时成为CustomCT),我在查看网站内容类型和网站集内容类型的时候并没有发现这个CT,而只是拥有两个ContentType。提供截图。

          

          在其他环境的TeamSite上我查看网站内容类型包含很多ContentType。如下图:

          

          有问题的环境做没做过Migration本人并不太清楚,但是怀疑是Migration后出现的问题。其他的确实想不出来什么用户操作会引起这种整体服务器上会出现的问题。

 

          期间测试:

          1.用此列表另存为模板,并以此模板创建列表修改ChoiceField的Settings,失败。(模板包含内容和不包含内容均测试过)

          2.创建新列表,增加ChoiceField类型的字段,修改,成功。(记得以前这个测试不成功,但是现在成功了,很诡异)

          3.修改同Web下其他列表字段,不成功。

          4.修改不同Web下不同列表字段,不成功。

          5.修改不同SiteCollection下不同列表字段,不成功。

          得出的结论为:新创建的不会出现这个问题,现存的Field,不限于ChoiceField,均会出现此问题。

          

          解决办法:

          将此列表存储为列表模板并且包括列表内容,在其他的SharePoint环境上上传此列表模板,以此模板创建列表,修改ChoiceField,成功。存储此列表为模板包含内容,上传回有问题的网站,然后用此模板创建列表,新建表单查看Field的Choices,正常。

 

          解决期间发现的问题:

          在正常环境用最初有问题的网站存下来的列表模板创建列表后,进入List Settings,多出现了一个Task内容类型,并且为默认,在原来环境下没有,对比截图。

          问题环境:

          

          正常环境:

          

          在问题环境用修改过的模板创建新的列表后,List Settings里面显示的ContentType和正常环境相同。