【问题标题】:"Google Maps API does not support this browser" in WinForms WebBrowser controlWinForms WebBrowser 控件中的“Google Maps API 不支持此浏览器”
【发布时间】:2018-02-19 19:03:15
【问题描述】:

从上周开始,在我们的应用程序的嵌入式 WebBrowser 控件中尝试使用 Google Maps API 绘制路线图时,用户开始收到脚本错误消息“Google Maps API 不支持此浏览器”。我以前遇到过这样的问题,但能够使用IE browser emulation 解决它们。但是,无论我安装了哪个版本的 IE,我模拟了哪个版本(包括 IE11),或者是否完全关闭了模拟,现在都会出错。在上周之前,这工作正常,所以我假设谷歌改变了他们方面的一些事情。

以下是出现此错误的示例 URL:https://www.google.com/maps/dir/?api=1&origin=123+Main+Street,+Dobbs+Ferry,+NY&destination=123+Main+St,+White+Plains,+NY&travelmode=driving

除了完全替换糟糕的 WinForms WebBrowser 控件之外,有没有人知道任何修复或解决方法?

【问题讨论】:

  • getright.com/useragent.html 作为该控件的用户代理报告了什么?
  • 这听起来不像你在做浏览器模拟正确。正如@mjwills 询问用户代理显示的内容是什么?它是 32 位还是 64 位应用程序?它是 32 位还是 64 位操作系统?
  • 仅供参考,我使用标准 WebBrowser 控件创建了针对 .NET 3.5 的快速 WinForms 项目。如果没有仿真注册表项,我会收到您提到的错误,使用正确的密钥可以正常工作。
  • 使用正确的密钥我的用户代理显示为Mozilla/5.0 (Windows NT 6.2; Win64; x64; Trident/7.0; rv:11.0) like Gecko,没有密钥它显示为Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.2; Win64; x64; Trident/7.0; .NET4.0E; .NET4.0C; InfoPath.3; .NET CLR 3.5.30729; .NET CLR 2.0.50727; .NET CLR 3.0.30729; Tablet PC 2.0)
  • 感谢您的回复。我忘了提到我正在使用 urlmon.dll 库根据当前安装的 IE 版本手动设置用户代理字符串。对于我正在使用的 IE11,它使用字符串“Mozilla/5.0 (compatible, MSIE 11, Windows NT 6.3; Trident/7.0; rv:11.0) like Gecko”。构建是 AnyCPU,我在 64 位上运行,但用户也经常在 32 位操作系统上运行。我尝试将其更改为使用您的用户代理字符串,但我仍然收到错误消息。我在 .NET 4.5.1 上运行。既然你让它工作了,我会再搞砸一些。

标签: c# winforms google-maps


【解决方案1】:

阅读this 文章后,我发现了问题所在。打开浏览器仿真时,我在注册表中的 ...SOFTWARE\WOW6432Node\Microsoft\Internet Explorer... 中启用它,而不是 ...SOFTWARE\Microsoft\Internet Explorer... 因为我在 64 位上运行操作系统。但是,只有在 64 位操作系统上运行 32 位应用程序 时,才应该使用 WOW6432Node 路径。我将其更改为在 64 位操作系统上为 64 位应用程序使用其他路径,现在它可以工作了。感谢您的帮助!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-09-22
    • 2020-07-11
    • 2016-09-26
    • 1970-01-01
    • 2022-01-22
    • 2021-01-25
    • 2015-01-02
    • 1970-01-01
    相关资源
    最近更新 更多