我正在反编译其中的一些方法 Microsoft.SharePoint.dll 尝试看看我是否可以使用其中一些类来满足我的需要,或者我是否必须重新发明轮子......

无论如何,我可以跟踪函数调用直到我开始调用由 SPRequest 包装纸。的很多功能 SPRequest 的类调用函数 SPRequestInternalClass 全部被标记的类 public virtual extern 通过 COM 对象在某处实现。

现在,我不想直接调用这些方法或任何类似的愚蠢方法,但我确实需要看看它们是如何实现的。

我的问题是 SP 代码的非托管 COM 部分在哪里?

有帮助吗?

解决方案

我想到了。我发现赫里斯托·巴甫洛夫 (Hristo Pavlov) 的这篇博文: 了解 SharePoint:SP请求

他在文章中解释道:

内部 SPRequest 类具有对名为 SP.SPRequest 的 COM 对象的非托管引用,该对象的 ClassID 为 BDEADEE2-C265-11D0-BCED-00A0C90AB50F,该引用在 OWSSVR.DLL 类库中实现并由 OWSSVR.DLL 类库公开。

SP.SPRequest COM 对象公开了近 400 个基本操作,几乎您使用 Microsoft.NET 托管 SharePoint 对象模型执行的所有操作(从 ContentDatabase 读取或写入内容数据库(包括数据、字段、内容类型、列表架构等))实际上都会执行通过这个非托管 COM 对象。更重要的是,OWSSVR.DLL实际上是在IIS中注册的ISAPI扩展,并且可以通过对/_vti_bin/owssvr.dll的HTTP请求直接调用其方法。许多 Office 应用程序(Word、Excel、InfoPath、SharePoint Designer 等)都直接使用对 OWSSRV 的 HTTP 调用,以便与远程 SharePoint 服务器集成。可以毫不夸张地说,OWSSRV.DLL是WSS 3.0的灵魂和躯体。它历史上来自 Microsoft.NET 之前的 SharePoint 版本 1.0,当时 Web 应用程序是使用 ISAPI 和 DCOM 等技术开发的。

编辑:

另一个注意事项是该 DLL 不在 GAC 中。

您可以在配置单元的 ISAPI 目录中找到该程序集。在 SP 2013 中,路径为:

C:\Program Files\Common Files\microsoft shared\Web Server Extensions\15\ISAPI\OWSSVR.DLL

或者您系统上的等效项。

编辑2:

祝你用这个 DLL 做任何事情都好运。您不能像使用 .NET 程序集那样对其进行反编译,因此了解 DLL 的位置实际上并不能帮助您了解内部的、未记录的实现。

许可以下: CC-BY-SA归因
scroll top