【发布时间】: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