积极答复者
有关MS CRM4.0 的this.server 值问题

问题
-
把之前的一个问题再问一下。
我的MSCRM4.0 之前的域名是 crm.***.com.cn,后来公司改域名,
这个系统的地址也就换成 mscrm.***.com.cn。
结果修改后,产生了很多问题。 许多按钮一点击就有js 报错。通过调试得知CrmService.js下的 function Ascentium_CrmService(sOrg, sServer)有问题。如图:
监视变量后得知里面this.server的值 居然还是以前的网址crm.***.com.cn。
于是我就把CrmService.js中的 网址改了,结果所做的任何修改都不起作用,好像改错地方,
但是我肯定就是这个文件。
会不会是存储在数据库中?或者我哪里没考虑到,请指点!!!
答案
-
数据库里面,MSCRM_Config数据库有个表,应该叫ServerProperty(记不太清了),有三个字段,Domain,AppDomian,SDK Domain
还有,确认你的orgnization name跟你脚本里的是否一样。
- 已标记为答案 Batistuta CaiModerator 2011年5月10日 13:36
-
把之前的一个问题再问一下。
我的MSCRM4.0 之前的域名是 crm.***.com.cn,后来公司改域名,
这个系统的地址也就换成 mscrm.***.com.cn。
结果修改后,产生了很多问题。 许多按钮一点击就有js 报错。通过调试得知CrmService.js下的 function Ascentium_CrmService(sOrg, sServer)有问题。如图:
监视变量后得知里面this.server的值 居然还是以前的网址crm.***.com.cn。
于是我就把CrmService.js中的 网址改了,结果所做的任何修改都不起作用,好像改错地方,
但是我肯定就是这个文件。
会不会是存储在数据库中?或者我哪里没考虑到,请指点!!!
继续补充:经过几个小时的摸索,发现了一点规律,看有没有高手看出是什么问题。(以下比较复杂,绕口,勿头晕...)
之前以为crmService.js (这个称为 脚本1)修改没有用,但那是在使用mscrm.***.com.cn运行系统时。
如果这时候,先修改crmService.js (这个改过的称为 脚本2),
然后添加一个新二级域名mscrm2.***.com.cn来运行系统,这时调试显示的就是 脚本2。也就是修改有效。
如果再修改crmService.js (这个称为 脚本3),运行mscrm2.***.com.cn,系统调试显示的还是脚本2。
接下来 添加一个更新的二级域名 mscrm3.***.com.cn来运行系统,这时调试显示的就是 脚本3。
以此类推,crmService.js 修改后只能被新域名享用,其他旧域名只能调用它创建时所存在的crmService.js 。
很奇怪的现象...
我是在内网测试,添加新域名(win2003,也就是给同一个站点 添加不同的主机头名),然后用内部DNS解析,
最后导致的结果就是:不同的域名访问同一个crm系统,会加载不同的js脚本,从而出现不同的运行结果。
懂我说什么吗...?
微软CRM- 已标记为答案 Batistuta CaiModerator 2011年5月10日 13:36
-
感谢各位帅哥美女的围观,问题终于解决了。确实是缓存问题,但是不知道是服务器缓存,还是客户端缓存,反正删不了。
我收到加时间戳的提示,我估计为什么换了域名就能读到新修改的脚本,应该是程序以为新路径访问的不是同一个脚本,所以就重新加载该脚本。
我尝试着给调用这个脚本的xmlhttp 加随机参数,结果证明了我的想法是正确的,如下。
function loadScript(url) { var x = new ActiveXObject("Msxml2.XMLHTTP"); // x.open('GET', url, false); 把这个改成下面的就OK了,不过这个缓存到底放在哪,还有待研究 x.open('GET', url+'?'+Math.random(), false); x.send(''); eval(x.responseText); var s = x.responseText.split(/\n/); var r = /^(?:function|var)\s*([a-zA-Z_]+)/i; for (var i = 0; i < s.length; i++) { var m = r.exec(s[i]); if (m != null) { window[m[1]] = eval(m[1]); } } }
- 已标记为答案 Batistuta CaiModerator 2011年5月10日 13:36
全部回复
-
把之前的一个问题再问一下。
我的MSCRM4.0 之前的域名是 crm.***.com.cn,后来公司改域名,
这个系统的地址也就换成 mscrm.***.com.cn。
结果修改后,产生了很多问题。 许多按钮一点击就有js 报错。通过调试得知CrmService.js下的 function Ascentium_CrmService(sOrg, sServer)有问题。如图:
监视变量后得知里面this.server的值 居然还是以前的网址crm.***.com.cn。
于是我就把CrmService.js中的 网址改了,结果所做的任何修改都不起作用,好像改错地方,
但是我肯定就是这个文件。
会不会是存储在数据库中?或者我哪里没考虑到,请指点!!!
继续补充:经过几个小时的摸索,发现了一点规律,看有没有高手看出是什么问题。(以下比较复杂,绕口,勿头晕...)
之前以为crmService.js (这个称为 脚本1)修改没有用,但那是在使用mscrm.***.com.cn运行系统时。
如果这时候,先修改crmService.js (这个改过的称为 脚本2),
然后添加一个新二级域名mscrm2.***.com.cn来运行系统,这时调试显示的就是 脚本2。也就是修改有效。
如果再修改crmService.js (这个称为 脚本3),运行mscrm2.***.com.cn,系统调试显示的还是脚本2。
接下来 添加一个更新的二级域名 mscrm3.***.com.cn来运行系统,这时调试显示的就是 脚本3。
以此类推,crmService.js 修改后只能被新域名享用,其他旧域名只能调用它创建时所存在的crmService.js 。
很奇怪的现象...
我是在内网测试,添加新域名(win2003,也就是给同一个站点 添加不同的主机头名),然后用内部DNS解析,
最后导致的结果就是:不同的域名访问同一个crm系统,会加载不同的js脚本,从而出现不同的运行结果。
懂我说什么吗...? -
数据库里面,MSCRM_Config数据库有个表,应该叫ServerProperty(记不太清了),有三个字段,Domain,AppDomian,SDK Domain
还有,确认你的orgnization name跟你脚本里的是否一样。
- 已标记为答案 Batistuta CaiModerator 2011年5月10日 13:36
-
把之前的一个问题再问一下。
我的MSCRM4.0 之前的域名是 crm.***.com.cn,后来公司改域名,
这个系统的地址也就换成 mscrm.***.com.cn。
结果修改后,产生了很多问题。 许多按钮一点击就有js 报错。通过调试得知CrmService.js下的 function Ascentium_CrmService(sOrg, sServer)有问题。如图:
监视变量后得知里面this.server的值 居然还是以前的网址crm.***.com.cn。
于是我就把CrmService.js中的 网址改了,结果所做的任何修改都不起作用,好像改错地方,
但是我肯定就是这个文件。
会不会是存储在数据库中?或者我哪里没考虑到,请指点!!!
继续补充:经过几个小时的摸索,发现了一点规律,看有没有高手看出是什么问题。(以下比较复杂,绕口,勿头晕...)
之前以为crmService.js (这个称为 脚本1)修改没有用,但那是在使用mscrm.***.com.cn运行系统时。
如果这时候,先修改crmService.js (这个改过的称为 脚本2),
然后添加一个新二级域名mscrm2.***.com.cn来运行系统,这时调试显示的就是 脚本2。也就是修改有效。
如果再修改crmService.js (这个称为 脚本3),运行mscrm2.***.com.cn,系统调试显示的还是脚本2。
接下来 添加一个更新的二级域名 mscrm3.***.com.cn来运行系统,这时调试显示的就是 脚本3。
以此类推,crmService.js 修改后只能被新域名享用,其他旧域名只能调用它创建时所存在的crmService.js 。
很奇怪的现象...
我是在内网测试,添加新域名(win2003,也就是给同一个站点 添加不同的主机头名),然后用内部DNS解析,
最后导致的结果就是:不同的域名访问同一个crm系统,会加载不同的js脚本,从而出现不同的运行结果。
懂我说什么吗...?
微软CRM- 已标记为答案 Batistuta CaiModerator 2011年5月10日 13:36
-
这个缓存问题,基本上是,每改一次就进行临时文件的清空操作,什么历史记录、cookie都删了,就是没啥效果。。。。
我所以怀疑,是不是别的什么地方会有记忆,如哪里的注册表之类
- 已标记为答案 Batistuta CaiModerator 2011年5月10日 13:36
- 取消答案标记 Batistuta CaiModerator 2011年5月10日 13:36
-
感谢各位帅哥美女的围观,问题终于解决了。确实是缓存问题,但是不知道是服务器缓存,还是客户端缓存,反正删不了。
我收到加时间戳的提示,我估计为什么换了域名就能读到新修改的脚本,应该是程序以为新路径访问的不是同一个脚本,所以就重新加载该脚本。
我尝试着给调用这个脚本的xmlhttp 加随机参数,结果证明了我的想法是正确的,如下。
function loadScript(url) { var x = new ActiveXObject("Msxml2.XMLHTTP"); // x.open('GET', url, false); 把这个改成下面的就OK了,不过这个缓存到底放在哪,还有待研究 x.open('GET', url+'?'+Math.random(), false); x.send(''); eval(x.responseText); var s = x.responseText.split(/\n/); var r = /^(?:function|var)\s*([a-zA-Z_]+)/i; for (var i = 0; i < s.length; i++) { var m = r.exec(s[i]); if (m != null) { window[m[1]] = eval(m[1]); } } }
- 已标记为答案 Batistuta CaiModerator 2011年5月10日 13:36