【发布时间】:2017-03-07 02:23:27
【问题描述】:
我正在向包含查询字符串的文档添加超链接。
网址示例:https://www.website.com.au/paynow/ext?rn=555&amt=95.40
我像这样将它添加到文档中 -
Dim hyperlink As Word.Hyperlink = WordDocument.Hyperlinks.Add(Me.Range, URL, "", "", "Click me to visit the website")
这会打开网站并忽略传入的查询字符串(基本上运行https://www.website.com.au。
如果我直接复制超链接链接(打开文档,右键单击超链接并选择“复制链接”),然后打开浏览器并粘贴它——> url 正确加载,使用了查询字符串。
我已经通过 fiddler 进行了检查,似乎文档加载项正在使用返回的最终重定向 URL。从阅读来看,这似乎也可能是 Office 产品的一个已知问题?
另外 - 如果我(以编程方式)采用我添加到超链接的相同 URL 并将其添加到 Process.Start("URL"),它加载得非常好。
[我什至尝试对 URL 进行编码 - 没有区别]。
有什么想法,在这里开始发疯了吗?
提前致谢。
【问题讨论】:
-
你能添加你的 Fiddler 痕迹吗? Word 通常会向 URL 本身发出第一个请求,以检查 URL 是否指向 Word 文档(如果是,则下载并打开该文档)。只有在那之后,URL(或者可能是重定向的 URL?--> Fiddler 会告诉你)被传递给 ShellExecute,然后在默认浏览器中打开 URL。在您的情况下,也可能是 HTTP 请求缺少身份验证 cookie,然后您只需重定向到开始/登录页面。
-
@Dirk Vollmar 跟踪中没有太多帮助,word 确实会进行第一次调用并返回一个重定向的 url,它不包含查询字符串,因为这些值被使用过一次并被隐藏从网址。我想知道是否有任何其他方法可以解决似乎是超链接对象的限制。或者也许告诉 word 不要先检查并加载页面。
标签: hyperlink ms-word interop ms-office vsto