最近一段时间在公司忙于将各类系统进行升级,其最主要的目标有两个,一个是将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. SQL Server 2008 R2——ROW_NUMBER() 去掉不同行中相同列的重复内容

    ==================================声明================================== 本文原创,转载在正文中显要的注明作者和出处,并保证文章的完 ...

  2. Hadoop环境常用命令

    用户可以通过dfsadmin -safemode value   来操作安全模式,参数value的说明如下: enter - 进入安全模式 leave - 强制NameNode离开安全模式 get - ...

  3. android viewpager 图片翻页例子

    使用ViewPager这个类可以轻松实现多个页面的滑动功能 viewpager默认在工具界面上是找不到的,需求添加android-support-v4.jar包: 如果没有找到,需要打开Android ...

  4. find 命令

    1.当前目录下查找"test.cpp"文件 find ./ -name test.cpp 2.当前查找含有"abcdef"字符串的文件 find ./ | xa ...

  5. Android Studio中使用android:src="@drawable/ic_launcher"报错

    今天尝试着安装了Android Studio,界面确实不错,列表什么的也改了很多. 然后新建工程,习惯性在activity_main那里加上一段代码测试看看: <ImageView androi ...

  6. javaScript事件(五)事件类型之鼠标事件

    一.事件 二.事件流 以上内容见:javaScript事件(一)事件流 三.事件处理程序 四.IE事件处理程序 以上内容见javaScript事件(二)事件处理程序 五.事件对象 以上内容见javaS ...

  7. Java对象序列化文件追加对象的问题,以及Java的读取多个对象的问题解决方法。

    这几天做一个小的聊天项目用到对象序列化的知识,发现对象序列化不能像普通文件一样直接追加对象.每次写入对象都会被覆盖.弄了2个多小时终于解决了.Java默认的对象序列化是每次写入对象都会写入一点头ace ...

  8. Appium学习实践(一)简易运行Appium

    环境: Appium 1.4.13 OS X  10.10.5 真机已安装app,或者未安装,通过ipa文件来安装,并启动Appium Inspector 点击Appium中的放大镜后,自动运行App ...

  9. 2014 UESTC暑前集训动态规划专题解题报告

    A.爱管闲事 http://www.cnblogs.com/whatbeg/p/3762733.html B.轻音乐同好会 C.温泉旅馆 http://www.cnblogs.com/whatbeg/ ...

  10. URL和URI区别

         URI:Universal Resource Identifier,通用资源标识符:   URL:Uniform Resource Locator,统一资源定位符:   其中,URL是URI ...