系统升级日记(3)- 升级SharePoint解决方案和Infopath
最近一段时间在公司忙于将各类系统进行升级,其最主要的目标有两个,一个是将TFS2010升级到TFS2013,另外一个是将SharePoint 2010升级到SharePoint 2013。本记录旨在记录升级过程中的一般性准备工作及在升级中可能存在的各种坑的解决方案。本记录会大量引用外部文章来作为解释说明,并不是一个step by step的指引,本文章并不适合小白用户而适合具有一定IT管理经验的人阅读。另外本文也并不保证完全正确。
第三篇:升级SharePoint解决方案和Infopath
本篇将介绍如何将一个SharePoint 2010解决方案升级到SharePoint 2013解决方案,及Infpath表单在SharePoint 2013中遇到的问题。
1. 解决方案升级
因为SharePoint 2010 是基于.NET3.5,而SharePoint 2013则是基于.NET4.0,其.NET Runtime不同,所以以前有一个最大的痛处,就是无法在SharePoint 2010解决方案中使用.NET4.0 framework的优秀特性。
我将原先的SharePoint 2010 解决方案用Visual Studio 2013打开,并没有预期的出现升级的向导,而且我也并没有找到相应的菜单将项目升级。我想因为Visual Studio 2013本来就同时支持SharePoint 2010和SharePoint 2013项目,所以不支持升级也有可能。
后来我找到一个简单的方法来解决这个问题:
1) 将项目文件用记事本打开,在<TargetFrameworkVersion>标签下面(或上面)再添加一个标签:<TargetOfficeVersion>15.0</TargetOfficeVersion>
2) 保存后用Visual Studio 2013重新打开项目,然后在项目属性中将Target Framework从.NET3.5更改为.NET4.5。
3) 将SharePoint相关的引用(比如Microsoft.SharePoint)都删除掉后重新添加。因为原先的引用是SharePoint2010的,而之后添加的则是SharePoint2013的。
2. 解决方案的安装
解决方案的安装很容易,使用Add-SPSolution和Install-SPSolution即可。我这里只强调一点,那就是SharePoint2013同时支持14模式和15模式的站点,一个Feature可以被同时安装在14\和15\两个目录下面来支持这两种模式,所以根据需求,我们最好加一个- CompatibilityLevel参数,比如我想让解决方案同时支持14、15模式,则用如下命令:
Install-SPSolution -Identity contoso_solution.wsp -GACDeployment -CompatibilityLevel {14,15}
3. Infopath的升级
从我现在的升级来看,Infopath升级后唯一遇到的问题就是在Infopath中调用Web Services失败的问题。当然这个问题同样适应于你新建的SharePoint 2013站点中,Infopath调用Web Services的问题。换句话说,只要你在SharePoint 2013中使用Infopath调用Web Services,则都会遇到这个问题。
我先介绍一下我的场景,我在一个List中采用自定义表单的方式自定义了表单,当然这个表单是采用Infopath来定义的,在这个表单中,调用了SharePoint2013自己的Web Services,这个Web Services是UserProifle里面的GetUserProfileByName(string name)方法,我的实际目的是通过这个方法返回当前用户的部门。
1) Windows Server 2012的回环检查(Loop back check)问题
我首先遇到的错误是新建列表项目时,Infopath表单打开后提示无法连接数据源,这个数据源当然就是指Web Service。然后查找日志,发现一个错误“远程服务器返回错误: (401) 未经授权”。
此错误是由于Windows Server 2012默认启用了回环检查所导致的。其实回环检查在Windows Server 2008就默认开启了,后来到了R2后又默认关闭了,谁知道在2012里面又默认开启了。由于Infopath forms services和SharePoint Web Services在同一台机器上,这时就形成了回环调用,被回环检查给阻止了,最方便的方法就是直接禁用掉回环检查。我采用修改注册表的方法来解决此问题,大家可以参考:
http://www.c-sharpcorner.com/UploadFile/shyjumohan/disable-loop-back-check-in-windows-server-2012/
2) Infopath forms services不支持claims-based认证的问题
解决掉回环检查后,界面上错误依旧,但是日志中已经提示”500 服务器内部错误”了。401改为500,很有进步,但是此错误信息很难定位。所以又查看了IIS日志,在IIS日志中有访问这个asmx地址的访问记录,但是我们看到使用的用户是一个nt\iuser的用户,而不是我当前的访问用户。这是因为Infopath forms services不支持claims-based认证,所以无法把当前用户身份传递过去,这是一个很麻烦的事情,我们必须指定一个公共的账户来访问Web Services。通过下面的文章来解决此问题:
InfoPath over Claims Authentication (SharePoint 2010 & 2013)
要点就是建立一个secure store app,然后给infopath建立一个udc文件,并且在udc中使用secure store app中存储的用户名密码,最后在Infopath中使用这个udc来连接数据源。
3) 在SharePoint管理中心中允许用户表单使用udc
当完成上面这一步后,界面上仍然是同样的错误,但是日志中显示错误“不允许用户表单使用udc”,这时才想起来在管理中心里面需要开启这个选项。这一步比较容易。
4) Infopath函数userName()返回格式的问题
当完成上面这一步后,界面上仍然是同样的问题,但是日志中显示错误是调用Web Services失败,因为调用GetUserProfileByName(string name)方法有一个参数,以前是不用传递的(实际上是传递了一个空字符串),当不传递时自动返回当前用户的信息。但是因为我们使用claims-based认证,所以再也没法使用当前用户身份(我觉得这是一个非常难受的地方),所以使用Infopath函数userName()来获得当前用户登录名,并且传入Web Services。我们发现这个函数在Infopath客户端预览时表现正常,但是在发布之后返回一个类似” i:0#.w|Domain\UserName”这样的一个字符串,这是因为用户是claims-based引起的。具体的格式可以参考下面的文章:
http://www.wictorwilen.se/Post/How-Claims-encoding-works-in-SharePoint-2010.aspx
这个问题也好解决,使用Infopath函数substring-after(userName(), "|")来处理一下就可以准确的得到domain\username这样的格式了。
总结:Infopath调用Web Services的问题应该是我从升级以来遇到最大的问题,无论哪种情况,界面上的报错都是一样的,还是要分析SharePoint日志,同时还分析了IIS日志。这个问题足足花了我4个多小时才完全解决,在此总结下来避免以后遗忘。
系统升级日记(3)- 升级SharePoint解决方案和Infopath的更多相关文章
- IBM Domino 9 出现 Domino Designer 您正在试图升级多用户安装。请获取正确的安装包以完成升级。 解决方案
如果网上搜索的其他方法解决不了,那么我的这个方法可以试一下. 出现的场景: 先装好了Notes,后准备装Designer. 在装Designer解压包之后,出现下面的错误,不能安装: 您正在试图升级多 ...
- SharePoint 解决方案手动打包简单介绍
介绍:在使用SharePoint中,我们经常需要做的就是打包解决方案,我们来介绍下SharePoint解决方案的手动部署,我自己觉得,解决方案是SharePoint中非常好的一个功能,部署和使用起来相 ...
- 在SharePoint解决方案中使用JavaScript (2) – 模块化
本文是在SharePoint中使用JavaScript的第二篇文章,前面的文章包括: 在SharePoint解决方案中使用JavaScript (0) 在SharePoint解决方案中使用JavaSc ...
- 在SharePoint解决方案中使用JavaScript (1) – 引用.js文件
本文是系列文章的第一篇. 在SharePoint解决方案中使用JavaScript (0) 作为在SharePoint应用程序中使用JavaScript的第一步,就是要知道如何将一个写好的.js文件, ...
- 在SharePoint解决方案中使用JavaScript (0)
随着Web前段技术(JavaScript/HTML5)的日益发扬光大,在Web应用程序中,我们开始更多的使用JavaScript.很多以往是放在服务器上运行的逻辑,现在都开始逐渐的向前段转移.这种趋势 ...
- 系统升级日记(2)- 升级到SharePoint Server 2013
最近一段时间在公司忙于将各类系统进行升级,其最主要的目标有两个,一个是将TFS2010升级到TFS2013,另外一个是将SharePoint 2010升级到SharePoint 2013.本记录旨在记 ...
- 系统升级日记(4):如何快速的修改Infopath中的各种URL
摘要: 最近一段时间在公司忙于将各类系统进行升级,其最主要的目标有两个,一个是将TFS2010升级到TFS2013,另外一个是将SharePoint 2010升级到SharePoint 2013.本记 ...
- 系统升级日记(1)- 升级到SQL Server 2012
最近一段时间在公司忙于将各类系统进行升级,其最主要的目标有两个,一个是将TFS2010升级到TFS2013,另外一个是将SharePoint 2010升级到SharePoint 2013.本记录旨在记 ...
- BPM SharePoint解决方案分享
一.需求分析 SharePoint作为微软推出的协同类平台产品,为客户提供了门户.内容.文档.流程.社区.搜索.BI等一系列的解决方案,然而其流程功能由于设计理念差异,不能完全满足客户的需求,主要原因 ...
随机推荐
- XAML中的特殊符号几空白字符处理
阅读目录 介绍 详细 处理 Demo下载 介绍 XAML标记语言是基于xml的,所以很多xml中的特殊符号在XAML也是需要处理的. 详细 (取自msdn) 字符 Entity 注释 &(“a ...
- 获取下拉框的value和值
jsp: <td class="formItem_content"> <select name="label" id = "labe ...
- ELF Format 笔记(九)—— Elf32_Sym 结构的 st_value 和 st_shndx 成员
ilocker:关注 Android 安全(新手) QQ: 2597294287 前面的笔记中提到过 Elf32_Sym 结构,本篇笔记再写一下其中的 st_value 和 st_shndx 成员. ...
- Sqlserver2008R2 数据库镜像配置步骤
Sqlserver2008镜像功能可以保障数据库的高可用性.数据库镜像维护着数据库的两个副本,这两个副本必须分别放置在不同的SQL Server数据库实例中.可以用两台服务器也可以用一台服务器的不同实 ...
- 让CKEditor支持FLV视频播放
平时都是做C/S开发,最近需要维护一个协会门户网站. 文章编辑使用CKEditor 3.3.2 + ckfinder 2.0的方案.可是这种方案居然不支持FLV视频播放,度娘说以前的老版本是支持的,这 ...
- What makes an excellent front-end developer?(for my English speech)
What makes an excellent front-end developer? Let me please start this talking by saying that what is ...
- 怎么解决ZBrush保存历史记录太多问题
经常有用户反映说ZBrush ®保存历史记录太多了,导致文件太大了!模型已经是降低级别保存了,在保存历史记录的时候还是很慢很慢,不知道怎么才能减少ZBrush保存的历史步骤的多少.针对这一问题,小编统 ...
- 3-2-1-0-GO
正式开始第3份工作,入职第2天,午饭后与Team Leader谈了1个多小时,很有收获. 首先,不同的公司有不同的企业文化和规章制度,需要尊重且入乡随俗,尽快学习并适应,争取早日融入公司和团队当中去, ...
- HDU 5155 Harry And Magic Box --DP
题意:nxm的棋盘,要求每行每列至少放一个棋子的方法数. 解法:首先可以明确是DP,这种行和列的DP很多时候都要一行一行的推过去,即至少枚举此行和前一行. dp[i][j]表示前 i 行有 j 列都有 ...
- Linux强化论:15步打造一个安全的Linux服务器
Linux强化论:15步打造一个安全的Linux服务器 Alpha_h4ck2016-11-30共28761人围观 ,发现 8 个不明物体专题系统安全 可能大多数人都觉得Linux是安全的吧?但我要告 ...