最近一段时间在公司忙于将各类系统进行升级,其最主要的目标有两个,一个是将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)

http://blogs.technet.com/b/rajbugga/archive/2013/08/07/infopath-over-claims-authentication-sharepoint-2010-amp-2013.aspx

要点就是建立一个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的更多相关文章

  1. IBM Domino 9 出现 Domino Designer 您正在试图升级多用户安装。请获取正确的安装包以完成升级。 解决方案

    如果网上搜索的其他方法解决不了,那么我的这个方法可以试一下. 出现的场景: 先装好了Notes,后准备装Designer. 在装Designer解压包之后,出现下面的错误,不能安装: 您正在试图升级多 ...

  2. SharePoint 解决方案手动打包简单介绍

    介绍:在使用SharePoint中,我们经常需要做的就是打包解决方案,我们来介绍下SharePoint解决方案的手动部署,我自己觉得,解决方案是SharePoint中非常好的一个功能,部署和使用起来相 ...

  3. 在SharePoint解决方案中使用JavaScript (2) – 模块化

    本文是在SharePoint中使用JavaScript的第二篇文章,前面的文章包括: 在SharePoint解决方案中使用JavaScript (0) 在SharePoint解决方案中使用JavaSc ...

  4. 在SharePoint解决方案中使用JavaScript (1) – 引用.js文件

    本文是系列文章的第一篇. 在SharePoint解决方案中使用JavaScript (0) 作为在SharePoint应用程序中使用JavaScript的第一步,就是要知道如何将一个写好的.js文件, ...

  5. 在SharePoint解决方案中使用JavaScript (0)

    随着Web前段技术(JavaScript/HTML5)的日益发扬光大,在Web应用程序中,我们开始更多的使用JavaScript.很多以往是放在服务器上运行的逻辑,现在都开始逐渐的向前段转移.这种趋势 ...

  6. 系统升级日记(2)- 升级到SharePoint Server 2013

    最近一段时间在公司忙于将各类系统进行升级,其最主要的目标有两个,一个是将TFS2010升级到TFS2013,另外一个是将SharePoint 2010升级到SharePoint 2013.本记录旨在记 ...

  7. 系统升级日记(4):如何快速的修改Infopath中的各种URL

    摘要: 最近一段时间在公司忙于将各类系统进行升级,其最主要的目标有两个,一个是将TFS2010升级到TFS2013,另外一个是将SharePoint 2010升级到SharePoint 2013.本记 ...

  8. 系统升级日记(1)- 升级到SQL Server 2012

    最近一段时间在公司忙于将各类系统进行升级,其最主要的目标有两个,一个是将TFS2010升级到TFS2013,另外一个是将SharePoint 2010升级到SharePoint 2013.本记录旨在记 ...

  9. BPM SharePoint解决方案分享

    一.需求分析 SharePoint作为微软推出的协同类平台产品,为客户提供了门户.内容.文档.流程.社区.搜索.BI等一系列的解决方案,然而其流程功能由于设计理念差异,不能完全满足客户的需求,主要原因 ...

随机推荐

  1. Android 中PopupWindow使用 (转)

    参考学习后遇到问题: 要引用:有好几个,可以用错误提示解决: import android.widget.PopupWindow; import android.widget.Toast; Activ ...

  2. 解决内网主机ping不通网关能ping内网

    有一台笔记本电脑可以自动获取IP,可以和内网其他主机互相PING通,就是PING 不通网关,只能上内网,不能上外网,IP换到其他主机上也可以上外网,说明路由器上没什么限制.路由器也查了,电脑也重装了, ...

  3. Linux安装Mysql rpm

    1.安装时候会提示与已经安装的RPM包有冲突,所以我们先卸载一些RPM包,要卸载哪些呢?我们要卸载的是包含有mariadb关键字的RPM包,执行命令:rpm -qa|grep mariadb来查看一下 ...

  4. java报表工具FineReport常用函数的用法总结(数学和三角函数)

    ABS ABS(number):返回指定数字的绝对值.绝对值是指没有正负符号的数值. Number:需要求出绝对值的任意实数. 示例: ABS(-1.5)等于1.5. ABS(0)等于0. ABS(2 ...

  5. web测试方法

    首先互联网B/S系统一般分为三层,即表示层.业务逻辑层.数据层,下面是我整理的关于web的测试方法. 表示层 一.功能测试 1.链接测试 确认每个链接有效且正确跳转 2.表单测试 确认表单能正常提交, ...

  6. 从〇开始构架前端(NLDV框架)

    从〇开始构架前端(NLDV框架) 框架 设计模式 摘要:一个普通应用,大到微信, 小到豆瓣FM,必不可少的都包括四部分:Network.Logic.Data.View(NLDV).如何把他们组合起来, ...

  7. POJ 1228 Grandpa's Estate --深入理解凸包

    题意: 判断凸包是否稳定. 解法: 稳定凸包每条边上至少有三个点. 这题就在于求凸包的细节了,求凸包有两种算法: 1.基于水平序的Andrew算法 2.基于极角序的Graham算法 两种算法都有一个类 ...

  8. java之多线程之一/序列化和反序列化

    线程安全: 如何自己手动创建一个线程 答:继承Thread类或实现Runnable接口 public class Mythread extends Thread{ @Override public v ...

  9. luogu[1140]相似基因

    题目背景 大家都知道,基因可以看作一个碱基对序列.它包含了4种核苷酸,简记作A,C,G,T.生物学家正致力于寻找人类基因的功能,以利用于诊断疾病和发明药物. 在一个人类基因工作组的任务中,生物学家研究 ...

  10. AppStore 上架注意事项及错误修改

    1.上架之前首页要配置好发布证书,配置用于发布的配置文件. 2.必须上传3.5英寸和4英寸图片,这两种图片尺寸不能缺. 3.提交的版本必须是在8.0及以上的版本. 4.必须用发布证书,如果提示UUID ...