阻止 Microsoft Office 2010 与 Subversion 服务器集成,就像它是 Sharepoint

Jam*_*ato 11 sharepoint internet-explorer svn microsoft-office-2010 apache-2.2

我们有一个 Apache Subversion 服务器,我们在其中存储(除其他外)所有文档。我们在 svn 中有很多 Word、Excel、PDF 等文档,我们所有的用户都使用 TortoiseSVN 作为他们的客户端界面。许多这些用户还将通过网络浏览器浏览存储库,(不幸的是)通常是 Internet Explorer。

最近我们开始试用 Office 2010(来自 2003 年),发现使用 IE 浏览时,repo 中的文档打开方式不同。它不是 IE 下载文件然后将其发送到适当的应用程序(之后它应该只是存储在本地的临时副本),而是将文档的URL发送到应用程序。该文档由应用程序下载,然后将其视为来自 Sharepoint 服务器,即应用程序尝试锁定它,然后将任何保存的更改自动上传回服务器。

从谷歌搜索来看,似乎很多人都想要这种行为。但是,我们想禁用它 - 它不适合我们现有的流程。我该怎么做呢?

我对客户端计算机没有太多控制权,因此涉及为每个客户端禁用所有 Office 文档协作功能的解决方案并不是我想要的。此外,除了禁用 IE 中的 Office 文档缓存处理程序加载项之外,我找不到太多可以做的事情。唯一可行的客户端选项是那些专门为我们的命名服务器禁用此功能但为其他服务器保留此功能的选项。

这样就剩下服务器端解决方案了。我猜 Office 认为 svn 服务器具有 WebDAV 支持,因此会进入类似 Sharepoint 的文档管理工作流。有没有办法在不禁用服务器上的所有 WebDAV 支持的情况下停止这种集成(假设我们甚至可以这样做)?我们实际上将 svn 的自动版本控制用于其他目的,因此它是必需的功能。我找到了关于禁用该功能的讨论,如果它实际上是一个 Sharepoint 服务器,但事实并非如此!我对这种事情的工作原理(即 Office 客户端识别服务器上的 WebDAV 支持)的理解非常有限,所以如果可以,请进一步解释。

如果重要,服务器设置是:

Apache v2.2.8 和 Subversion v1.4.6 在 Ubuntu Hardy 8.04 上。

Jam*_*ato 13

解决了它(终于)。http://support.microsoft.com/kb/838028解释了 Office 如何使用 Microsoft Office 协议发现来确定文档服务器是否具有 WebDAV 功能。它发送一个 HTTP 1.1 OPTIONS 请求,并期待一个 200 OK 回复,详细说明可用的 DAV 功能。Subversion 服务器具有(有限的)DAV 支持和回复,然后 Office 使用它直接写回服务器。

我们使用的解决方案是在 Apache 服务器上使用 mod_rewrite 来拦截这些请求并发回 405 Method Not Allowed 响应。重写配置为:

# Intercept Microsoft Office Protocol Discovery
RewriteCond %{REQUEST_METHOD} ^OPTIONS
RewriteCond %{HTTP_USER_AGENT} ^Microsoft\ Office\ Protocol\ Discovery [OR]
RewriteCond %{HTTP_USER_AGENT} ^Microsoft\ Office\ Existence\ Discovery [OR]
RewriteCond %{HTTP_USER_AGENT} ^Microsoft\-WebDAV\-MiniRedir.*$
RewriteRule .* - [R=405,L]
Run Code Online (Sandbox Code Playgroud)

它拦截来自名为“Microsoft Office Protocol Discovery”的代理的方法 OPTIONS 的所有请求,并发送回 405。该解决方案由http://rails.nuvvo.com/lesson/2318-dealing-上的第一条评论建议 with-microsoft-office-protocol-discovery-in-rails#comments

现在,Office 尝试一些 OPTIONS 请求,被 405 拒绝,然后放弃并关闭对该特定服务器的所有 DAV 支持,同时为客户端可能想要与之交互的任何其他服务器启用它。