如何使用SharePoint Web服务确定SharePoint版本?

4
我需要一种方法来根据提供的URL确定SharePoint的版本。此外,我需要通过SharePoint Web服务或其他任何不涉及SharePoint对象模型的方法来实现它(因为代码不在服务器上执行)。有人能帮忙吗?谢谢。
3个回答

15
为了实现这一点,您可以对SharePoint URL执行Web请求,然后捕获主机标头。
有一个名为MicrosoftSharePointTeamServices的主机标头,它将提供您的SharePoint版本。
请参见下面:
using System;
using System.Net;

class C {
  static void Main(string[] args) {
    var uri = new Uri(args[0]);
    var wc = new WebClient();
    wc.UseDefaultCredentials = true;
    wc.DownloadString(uri);
    var sharePointVersion = wc.ResponseHeaders["MicrosoftSharePointTeamServices"];
    Console.WriteLine(sharePointVersion);
  }
}

请将您的SharePoint版本与以下列表进行比较:

12.0.0.6535 MOSS 2007 SP2 或 WSS 3.0 SP2 + 2009年12月累积更新(KB960010 + KB960011)

12.0.0.6524 MOSS 2007 SP2 或 WSS 3.0 SP2 + 2009年12月15日更新(KB977027 + KB977026)

12.0.0.6520 MOSS 2007 SP2 或 WSS 3.0 SP2 + 2009年10月累积更新(KB974989 + KB974988)

12.0.0.6514 MOSS 2007 SP2 或 WSS 3.0 SP2 + 2009年8月累积更新(KB973400 + KB973399)

12.0.0.6510 MOSS 2007 SP2 或 WSS 3.0 SP2 + 2009年6月累积更新(KB971538 + KB971537)

12.0.0.6504 MOSS 2007 SP2 或 WSS 3.0 SP2 + 2009年4月累积更新(KB968850 + KB968851)

12.0.0.6421 MOSS 2007 SP2 或 WSS 3.0 SP2(KB953338 + KB953334) [已于2009年8月1日更新:SP2下载现已包含修复激活问题的热修补程序(KB971620), 您可以在Microsoft SharePoint团队博客上找到更多信息]

12.0.0.6341 MOSS 2007 SP2 或 WSS 3.0 2009年2月累积更新(KB961755 + KB961756)

12.0.0.6335 MOSS 2007 SP2 或 WSS 3.0 2008年12月累积更新(KB960010 + KB960011)

12.0.0.6331 为 MOSS 2007 或 WSS 3.0 的 2008 年10月累计更新 (KB957691 + KB957693, KB958567 和 KB958569)

12.0.0.6327 为 MOSS 2007 或 WSS 3.0 的 2008 年8月累计更新 (KB956056 & KB956057)

12.0.0.6318 为 MOSS 2007 或 WSS 3.0 的基础设施更新 (KB951695 & KB951297)

12.0.0.6303 为 MOSS 2007 或 WSS 3.0 的 Service Pack 1 后补丁 (KB948945)

12.0.0.6301 为 MOSS 2007 或 WSS 3.0 的 Service Pack 1 后补丁 (KB941274)

12.0.0.6300 为 MOSS 2007 或 WSS 3.0 的 Service Pack 1 后补丁 (KB941422)

12.0.0.6219 为 MOSS 2007 或 WSS 3.0 的 Service Pack 1

12.0.0.6039 为 MOSS 2007 或 WSS 3.0 的 2007 年10月公共更新

12.0.0.6036 为 MOSS 2007 或 WSS 3.0 的 2007 年8月24日热修复包

12.0.0.4518 为 MOSS 2007 或 WSS 3.0 RTM 版本

12.0.0.4407 为 MOSS 2007 或 WSS 3.0 Beta 2 TR 版本

12.0.0.4017 为 MOSS 2007 或 WSS 3.0 Beta 2 版本

12.0.0.3111 为 Office 12 (PDC 镜像 - 预发布测试版) - 此版本的 Office 没有支持链接

添加/删除程序对话框。

干得好!感谢你的回答。非常紧凑、整洁和高效的代码。完美! - Boris
我在WSS和MOSS 2007中得到了相同的版本名称吗?:http://stackoverflow.com/questions/5002569/i-am-getting-same-version-name-for-wss-and-moss-2007 - Ayyappan Anbalagan

2
这里是另一个选项(来源于Jeremy Thake的博客)。浏览至:

http://<servername>/_vti_pvt/service.cnf

例如返回:

vti_encoding:SR|utf8-nl

vti_extenderversion:SR|14.0.0.7145

虽然它不是严格意义上的网络服务,但你可以使用HTTP GET方法调用它并解析结果。此外,这种方法无需获得访问URL所在站点集合的权限,而采用被接受答案的方法则需要权限。

0

快速浏览Web服务,我找不到这样做的方法(即使在中央管理下的admin.asmx服务中也是如此)

思路:

  1. 如果能够模拟成系统帐户,获取 /_layouts/settings.aspx 页面,那里有一个 ProductVersionString 属性,可以解析 HTML 来获取它(考虑使用 jQuery 获得更快的结果)

  2. 如果能够更改服务器,在 12\TEMPLATE\LAYOUTS 文件夹(或 Web 服务)中创建 version.aspx 页面,并通过反射输出 Microsoft.SharePoint.Utilities.SPUtilityInternal 类型及其 ProductVersionString。


F. Aquino,感谢您的回复。不幸的是,这在SharePoint 2010中行不通。我需要此功能的主要原因是要确定用户是否提供了SP2007或SP2010站点的链接。在这两个版本中,子网站的创建方式不同,因此我需要在我的代码中提供分支。分支条件应为SP2007为true或SP2010为false。 - Boris
我不明白为什么不行,12只是一个例子,而且对象模型在这部分没有太多改变,但我最终还是投了下面Josha的答案,那个更好。 - Francisco Aquino
我无法使用SharePoint的对象模型。 - Boris

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接