Google Map API:Error 500 地图显示问题

最近一个项目要通过ASP.net 显示Google 地图,采用网上开源的框架,Google Map User Control for ASP.NET . 由于在Google API key 的申请 要和与域名绑定,但是域名在上线之前一直没有注册下来。导致该功能一直没有好好测试。之前,出现弹出对话框的干扰,以为是 域名问题导致。因此,后来就先上了生产环境。考虑等域名注册好之后,申请 Google API key,修改配置文件即可。但是,后来域名注册好之后,重新申请了Google  API key.  发觉了一个显现: 只有在IIS 重启之后的,来自客户端的第一次请求,Google  map 才可以正常显示。 如果来自另一个客户端,或者将第一访问的客户端的Cookie清空。 这时候,再次发送请求是,在不同浏览器中出现下面错误:

IE 中:Webpage error details

User Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; InfoPath.2; BaiduGame)

Timestamp: Wed, 21 Apr 2010 05:06:33 UTC

Message: Sys.Net.WebServiceFailedException: 服务器方法“GetGoogleObject”失败,

并发生以下错误: — 处理请求时出错。

Firefox 中:

POST http://songkai.net/GServcie/GService.asmx/GetGoogleObject 500 Internal error

{“Message”:”处理请求时出错。”,”StackTrace”:”",”ExceptionType”:”"

开始分析这种现象一直以为 是 Web Service 和 ASPX 页面对Session的处理机制不同,

导致。并怀疑 是生产环境的服务器配置有问题。并搭建了3台虚拟机,进行测试。

发觉在虚机环境下,是没有这个错误的。 进一步论证了可能是 生产环境的的问题。但是在重装了

服务器操作系统,IIS 等一系列操作之后,该问题仍然存在。一度陷入迷茫。 及至后来,

想到测试服务器和生产环境 唯一不同的是配置文件,因为,我们去升级的时候,

通常不会改变配置文件。因此,就把测试环境下的 配置文件,放到生产环境,

只是更改了数据库联接字符串,发觉错误没了。然后 ,对该两个文件比较 ,

发觉了 一个 可疑的配置项 ,就是网页的过期时间,要在测试环境 是 1;

在 生产环境是 999999. 才恍然大悟。原来 ,在客户端 第一次访问 Google Map 页面的时候,

页面缓存第一次构建没有问题。 当第二个客户端来访问的时候,在缓存的页面去调用Web Service,

Web Service在对该session处理的时候发觉不匹配,导致在获取 GetGoogleObject的时候有异常抛出。

问题 1:

为什么在测试环境的配置文件和生产文件的配置节点有出入?

-> 发布到测试环境的是 直接从 TFS 中获取的代码重新发布而成,

在TFS中的配置文件,是针对开发用的,所以 , 页面缓存设置为 1。

这样 发布到测试环境,保留了该配置值。也许,如果执行非常严格的测试环境发布流程

这个问题也许就发现不到。

问题2 :

为什么将页面缓存设置为 这么长时间?

-> 本项目有20% 的功能是CMS 功能,为了提供访问速度, 将CMS相关的页面做页面级缓存,

只有在后台更新 文章的时候,采取清除缓存,并重新构建缓存。应此,默认的页面缓存时间很长。

Did you enjoy this post? Why not leave a comment below and continue the conversation, or subscribe to my feed and get articles like this delivered automatically to your feed reader.

Comments

No comments yet.

Leave a comment

(required)

(required)