0

你好 StackOverflow 社区,

我刚刚开始遇到存储在 MS-Access 表中的超链接未按预期运行的问题。

我有一个小型数据库,除其他外,它记录了指向公司 Sharepoint 网站上托管的文档的链接。直到几天前,数据库和超链接都运行良好。

出于某种原因,在过去的几天里,每当我(或我的任何用户)通过 Access 表单单击这些超链接(或者我直接从表格中单击)时,我都会遇到奇怪的行为:

单击该链接会根据需要打开默认浏览器的新实例。该浏览器确实导航到公司的 Sharepoint 网站。但是没有一个链接实际上打开了它们打算指向的特定文档。

相反,所有链接都会在 Sharepoint 站点中显示一个通用文件/文件夹菜单。就好像这些链接指向现有文件夹中不存在的文件一样。

非常奇怪的部分是,如果我“编辑”我的数据库中的任何超链接,并简单地从编辑超链接窗口中选择并复制“地址”文本,我总是会立即拉出正确的所需文档,如果只是粘贴地址直接进入新的浏览器窗口。

我会认为这种类型的剪切/粘贴必然等同于单击链接。但显然情况并非如此。

我觉得我可以安全地排除对 Sharepoint 网站本身的任何更改都会导致我在单击链接时出现问题的可能性(否则剪切/粘贴地址不会显示正确的文档),但我必须承认我我很困惑为什么只单击直接用于工作的超链接,但不再这样做了。

我不相信有任何代码或其他相关信息可能对我有帮助而我忽略了,但如果有人对这里可能发生的事情有任何想法,我会渴望提供任何澄清/等。

提前感谢您的任何想法或建议!~JQN


  • 编辑:我已经删除了这个问题,因为上述问题已经停止发生。我无法解释原因,但在发布原始帖子的一两天内的某个时间点后,我也无法再次重现该问题。

从那以后,这个问题又回来了。我已经能够确定以下内容:

  • 正如我在下面的注释中所描述的,当我遇到这种奇怪的链接行为时,我没有收到来自 MS-Access 的标准警告,表明超链接可能有害等。

  • 奇怪的是,只需打开一个文件对话框/文件选择器,然后通过该对话框导航到(同步的)Sharepoint 站点上的任何位置,似乎就可以解决问题。我不需要实际选择或打开 Sharepoint 上的任何位置,只需在同步的文件夹结构中导航似乎就可以了。

  • 一旦发生这种情况,所有链接都会再次按预期运行(即它们直接打开正确的链接文件,而不是登陆根文件夹页面)。它们也会返回 MS-Access 超链接警告。文件/链接行为将保持该状态数天。我估计,只有在文件对话框上次运行后一周或更长时间不活动之后,问题才会返回。

    • 进一步编辑:新的更新......时间已经过去,问题再次出现。正如怀疑的那样,Sharepoint 之外的页面链接不受影响,并且按预期打开,没有问题。再一次,标准的 Microsoft 超链接警告对话框没有出现任何链接。

显然,既然我已经找到了文件对话框的解决方法,那么当它出现时我很容易解决这个问题。不过,我希望这能给某人敲响警钟,也许你们中的一个人可以为我指出正确的方向,以便为我的用户提供更完整的修复。

再次感谢您对此的任何帮助!

  • 另一个编辑:好的....根据我在过去几周中学到的所有东西(如本文和下面的评论中所捕获),我正要删除这个问题并将其重新发布为“为什么 Sharepoint 会从 MS-Access 重定向我的 URL 请求?” 当我试图搜索论坛以确保尚未提出该问题时,我偶然发现了一些我认为可以解决潜在问题的信息:

看起来这与 Office 处理 URL 请求的(非常不透明的)方式有关。它显然不是简单地在指定链接处打开文档,它首先通过发送“Microsoft Office 协议发现”请求来“预测试”(我想这是正确的词)URL。

显然,Sharepoint 可能以某种方式不喜欢该 MOPD 请求的细节,如果发生这种情况,Sharepoint 将重定向到文件目录页面——并且该目录页面最终在浏览器中打开,而不是预期的链接/文档。

同样,这只有时会发生,有时不会发生。当它确实发生时,我发现了一个笨拙的解决方法,可以在大约一周左右的时间内纠正这个问题。在那一周内我无法重现该问题,我只需要等待解决方法到期(我显然不完全理解为什么我笨拙的解决方法有效)。

似乎不可能操纵 MOPD 请求的细节。如果可能的话,我希望能够完全免除 MOPD,因为我希望通过 Access 链接到的所有文件无论如何都以只读方式打开。不幸的是,我认为这也不可能。

我在另一个 SO 线程HERE中找到了一些关于此的信息。我还没有完全准备好提交这个问题的答案,但我对什么样的事情可以作为可接受的解决方法有一些想法。

如果有人对我如何能够按需重现问题有任何想法,而不是简单地再等一周让任何密钥/cookies/settings/etc 再次过期,这将是有帮助的。如果可能的话,我需要完全在访问端实现任何可能的解决方案,而不是在 Sharepoint/服务器端。再次感谢您的任何建议!

4

1 回答 1

0

我现在将其作为答案发布,但在我有机会验证它是否确实有效之前会避免接受它。

我正在插入一些将在数据库启动时运行的代码。它将打开一个(不可见的)表单,其中包含一个 Access WebBrowser 控件。我将让该控件导航到 Sharepoint 站点上的特定文件。我相信实际上是这个动作以某种方式导致链接问题在一周内得到解决。

此表单将在后台静默运行,导航到共享点文件位置,然后关闭。这应该有望刷新链接正常工作时存在的 MODP 请求的任何特征(并且在它们不正常工作时不存在)。

从本质上讲,我希望这种方法能够重置我(大约)一周的所需链接功能窗口,以便在每次打开数据库时重新开始。换句话说,我认为这会起作用,尽管我仍然不完全理解为什么。

祝我好运!

;)

于 2015-10-22T17:47:57.250 回答