整合开发的新思路
最后一个整合开发的作品是PDO统一接口,这个方案解决了多系统通行注册、登陆等一系列问题,当时重点考虑的因素之一,包括了尽量不修改各个系统的源代码,不影响后续升级,数据库和程序的独立性等。而统一接口也的确解决了这些问题。 阅读全文…
最后一个整合开发的作品是PDO统一接口,这个方案解决了多系统通行注册、登陆等一系列问题,当时重点考虑的因素之一,包括了尽量不修改各个系统的源代码,不影响后续升级,数据库和程序的独立性等。而统一接口也的确解决了这些问题。 阅读全文…
三方整合接口配置的时候,最容易出现问题就是各个程序的配置文件的修改了,很多网友都是在这上面出错。比如下面这几句:
Const API_Urls = "博客@@http://Localhost/oblog4/api/API_Response.asp"
Const DvApi_Urls = http://localhost/cms/API/API_Response.asp
Const strTargetUrls = "http://localhost/cms/API/API_Response.asp"
整合因为使用了xmlhttp,使得使用相对路径而不使用完整URL不可行了。但是这样一来,也限制了整合的域名。
随着双线空间、镜像站点的越来越广泛,原来的整合配置已经不能再满足需要。有网友提出这个问题,我当时给了一个方案,就是动态获取用户访问的域名,然后用到整合配置中去。当时没有做测试,也没有深入。
今天在动易起航教师里,又遇到网友提出这个问题。我也正好想测试和解决一下这个问题,就在本机进行了简单的测试。结果整合成功。下面讲解一下:
首先,原理就是把原来的配置文件中的接口路径定义由常量定义改为变量,这样支持在变量赋值中使用另外的变量。然后,我们新建一个变量用来存储ServerVariables里读取的Server_Name变量。再把这个变量赋值到接口路径定义中去。也就是下面用红色标记出来的部分:
Const API_Urls = "博客@@http://www.domain.com/oblog4/api/API_Response.asp"
Const DvApi_Urls = "http://www.domain.com/cms/API/API_Response.asp"
Const strTargetUrls = "http://www.domain.com/cms/API/API_Response.asp"
这部分就是要动态获取的部分。
以动易的为例,原来是
Const API_Urls = ……..
改成
Dim API_Urls
API_Urls = ……..
我们首先定义一个存储用户访问的域名的变量:
Dim strSiteRoot
然后从ServerVariables集合众获取该变量:
strSiteRoot = Request.ServerVariables("SERVER_NAME")
最后把变量用到接口路径定义中去:
Dim API_Urls
API_Urls = "论坛@@http://" & strSiteRoot & "/bbs/dv_dpo.asp"
其它两个程序的接口配置,也按同样原理做即可。
下面是修改好的三方整合配置文件供参考:
在动易2007的留言管理后台表现层开发中,遇到一个怪异的问题,添加留言分类的时候,留言分类添加成功后,名称显示为%#23424;这样的编码,把所有的输入检测都去掉了还是这样,问开发部的同事,大家都没遇到这个问题。



开始的时候思路被误导了,总认为是被Unicode编码了,但是怎么想也没有在哪里进行过处理啊,后来在GridView的编辑列里,找到一个“是否以HtmlEncode编码呈现”的选项,设置为true以后,显示正常了,但是从编辑框可以看到还是乱码。受此启发,在BLL层的代码里找到了对留言分类标题进行HTMLEncode编码的操作。删除之后,一切正常了。
这样一个小错误,困扰了我差不多一个月时间,真是郁闷了。
测试环境:Windows Server 2003 + 瑞星防火墙2006 单机版
问题描述:在禁用瑞星防火墙保护的情况下,三方整合注册登陆测试正常;启用防火墙保护后,从动网登陆出现msxml超时错误提示,无法登陆,防火墙日志中提示两条禁止w3wp.exe访问网络的请求,具体为0.0.0.0:1485 -> 220.164.71.24:80[web] 的请求。关闭防火墙保护,登陆正常,再启用,无法登陆。
原因描述:由于w3wp.exe的网络请求被禁止,xml数据包不能正常发送到整合接口。
解决办法:(仅以瑞星防火墙为例)
[1]在瑞星防火墙的“系统设置”中,选择“规则设置”下的“访问规则”,点击右边的“增加规则”(如图)

[2]在“常规”选项下,选择程序:“C:windowssystem32inetsrvw3wp.exe”,在“所属类别”选择“系统软件”(可选)

[3]在“高级”选项中的所有规则选择“放行”。(如图)

退出设置。
备注:如果不使用添加访问规则的方式,通过添加IP规则,不论设置任意端口到80的放行规则还是80端口到任意端口的放行规则,均不起作用。其它防火墙环境请参照本文自行设置。
今天做技术支持的时候,有个客户的整合出现一个很怪异的情况:
动网、动易、博客三方整合,其它所有的都很成功,唯独一点,就是在动易首页注销的时候就出现服务器无响应。
我直接访问/User/User_Logout.asp退出没有问题,那就是Ajax部分的问题了,于是我访问/User/User_Logout.asp?action=xml,结果发现返回的xml数据包是空的,没有必要的用户名和密钥等信息。
检查用户的/User/User_Logout.asp,发现和最新版本的文件一致。再检查用户的/JS/checklogin.js文件,除了显示风格的html代码部分有修改,其它的也和最新版本一致。这就奇怪了。
我让客户把动易的整合暂时禁用,再测试发现一切正常。肯定是/User/User_Logout.asp文件处理xml请求的部分出错了,但是文件本身没错,难道接口有问题?
我让他把动易的/API/API_Config.asp发给我,结果发现这个文件是旧版本的,他告诉我是4月22日下载的。换成SP3的文件(该文件是在SP2的时候更新的)后,问题解决。
SP2以前的API/API_Config.asp文件和SP2以后的文件比较如下:
旧文件
新文件
结论:用户在每次升级动易系统以后,不需要单独下载额外的整合接口(除非我在官方论坛单独发布补丁并说明什么情况下需要使用),因为动易的最新整合接口会包含在每次发布的新版本中。也就是动易不需要单独的整合接口文件。
注意:本文适用于整合已经成功,偶尔出现500错误,提示MSXML错误,或者在本地测试整合成功,传到服务器上后出错的用户。
症状描述(蓝色部分根据用户的服务器情况会有不同,有时候出问题的是动网或者oblog的文件):
错误类型:
msxml3.dll (0×80072EE7)
The server name or address could not be resolved
F:POWEREASYUSER../API/API_Function.asp, 第 290 行
问题描述:整合成功后,在动易后台删除用户时另外两个系统不能同步。而其它所有操作都已正常。
临时方案:修改动网和oblog的接口解决。
动网的修改:
打开动网论坛根目录下的dv_dpo.asp文件,找到147行左右的
D_Users = Split(UserName,",")
修改为:
最新评论