Win2003下Delphi7写的客户端调用WebService服务时异常

<一>

用D7写了一个调用C#的WebService客户端程序。开了一个线程,定时访问WebSerice的接口。

程序在我的本本上(WINXP)测试时,跑的很欢畅。

<二>

昨天晚上,把这个WebService客户端以NT服务的形式注册部署到服务器上(Win2003 Server)。

这样开机后便可以服务方式自动运行,不用人工监管。

待部署完毕后,启动服务。但执行时间一到,日志中监测到报错:调用WebService时异常。

可原本好好的,咋这就纳闷了呢!?

并且这是个很简单的东东,于是,郁闷。

服务器没有IDE环境,Debug非常痛苦,日志记录跟踪。

跟踪发现,得到WebService对象的时候是没有问题的,但在调用其接口的时候产生了异常。

又单独写了WebService客户端可执行的测试程序,在服务器上运行。

结果Throw出的Exception是“Access violation at address 00E24255. Write of address 00E24255”。

晕菜。这就是出名的“Access violation”。

没办法,解决问题吧。

通常访问对象(内存地址)不存在或COM异常时会有这种报错。

先在网上搜,看看是不是WebService的问题。

baidu+google,搜个底朝天,无解,继续郁闷。

“Access Violation”果真是大名鼎鼎--“最令人气恼的Windows程序遇到的错误之一”。

关于“Access violation”,的确有N多条记录被搜到,但无对症的。

其中说法不一,各有特色。

有关于系统dll的,有关于硬件设备及其驱动的。

还有一贴,好像是老猫写的,关于Delphi Access violations 问题的解决之道,亦非我所需者。

另有一贴,说是线程中访问ADO的问题,但我已经初试化了COM接口。

于是打开程序,把线程排查看了一边,没问题,好好的。

另外,一般关于Delphi打造WebService客户端的例子中,都会提到THTTPRIO的。

而我一向是不用这个东东的,嫌麻烦。

莫非是这个小东东在搞鬼,它也就是起到接口转换的作用。

我加了一个。转了一下。试了一次。

徒增加了一点郁闷。

<三>

接下来琢磨:程序在笔记本上无误,但部署在到服务器上出错。说明服务器的环境有问题,而非程序本身之过。

莫非在线程中调用WebService服务,在客户端需要部署什么插件或注册什么东东乎?

就象部署MIDAS的时候,需要注册midas.dll一样。

于是乎,狂搜。

在CSDN上发现了一个哥们说--

>使用Delphi在客户端调用WebService
>确保你的电脑上装了SoapToolkit
>新建项目,要Uses ComObj

很好奇:SoapToolkit。

于是乎,搜。下载。

把“SoapToolkit30.EXE”,装到服务器上。

然,问题依然。

可选择的:急死,或气死。

<四>

时值深夜,大雨如注。

抓耳挠腮,百思不解。

蚊虫袭来,浑然不觉。

青灯古佛,颇有禅意。

凄凄惨惨戚戚中,我只能独自一遍一遍大喊:买嘎的!买嘎的!

再想办法~~

待从头,收拾旧山河。

<五>

想来想去,没办法了。换台机子试试。

于是找了一台PC,同样是Win2003 Server。

试了。没有问题。

信心大增。

突然,慢着--莫非是Delphi的问题?--这台PC上装有D7的IDE,而服务器上没有安装Delphi。

莫非在Delphi在安装的时候,注册了什么东东,这样WebService客户端就可以运行了。

而没有安装IED的机器就不能运行?--按说不会,调用WebService不会太依赖客户端的环境。

但,总结以往血淋淋的教训,从业的经验告诉过我们--这是值得试试的。

高人曾说过:绝望的时候,稻草是可以救命的。

<六>

我的稻草是一张D7的安装光盘,哪怕是盗版的。 *_*

But,就在这个深夜--华南的多雨的闷热的深夜里--我的稻草没有在身边。 :(

(转折句,的确能够加强语感,我喜欢!)          

它在光盘包里。光盘包在行李箱里。而行李箱在住所。

住所在X公里外(X>=5)。

<七>

坐上车的时候,雨已经停了。

回到住所,巴西正对克罗地亚。

那群跳桑巴舞的家伙在拼命的时候,WK,我也在北京时间里奋斗。

不过,对不起了,兄弟们!你们继续,俺洗洗睡了。

天生对某些运动不敢兴趣。

辗转反侧。

绕树三匝。

终于睡去。

<八>

7点01分,短信。是昨夜比赛结果。免费赠的。

起床。

D7光盘。

吃点喝点。

上班。

<九>

D7在哪里?D7在光盘上。光盘在光驱中。

光盘是好光盘。光驱是好光驱。不错。

茶叶还没有泡展,已安装完毕。

对一些人来说,我们深爱着D7--我们吃饭的家伙。

欣欣然。

D7的启动画面已经在Win2003 Server的服务器上出现了。

但是,报错了--

是“Can't load package:dclite70.bpl”的异常。

同样显示的,还有“Access Violation”的错误。

我,脸绿了。

不止是简单的faint!

难道安装出有问题了?在安装时没有报错。

第一次遇到这种问题--我信赖的D7啊!

要有怀疑精神。怀疑自己安装错了。

卸载。

OS重启。

再次安装。

再次安装完毕。

再次启动D7。

再次是“Can't load package:dclite70.bpl”的异常。

再次显示的,还有“Access Violation”的错误。

于是,开始缺氧+眩晕。

<十>

从昏厥中醒来,深深太平洋的深深质疑 Win2003 Server + D7 的组合。

而且,这个还是个“刀片”服务器。

当时,有了一个决定。

凡遇到用Win2003者,先爆打一顿,弄成半死不活,半身不遂,半条命,爆头。

然后再用“刀片”想法弄成酱。

酱油也行。

:"(

<十一>

行走江湖。安全第一。

风平浪静。海阔天空。

平时对Win2003使用不多,了解不深。

看了看系统,是Standard Edition + Service Pack 1的。

上网了解了一下,N个人曾在Win2003 Server下遇到过各种各样的“Access Violation”。

打过各种各样的补丁。

又特意去看了看那台PC,装的是Enterprise Edition + Service Pack 1的。

版本果然不一样。

于是,找补丁。

期待--蓦然回首。那X却X。

<十二>

百二秦关终属楚。

三千越甲可吞吴。

微软的补丁可真及时,勘比宋押司。

补丁号码是:KB904639

名称是:Windows Server 2003(32 位 x86)更新程序 (KB904639)

快速描述:安装本更新程序可以解决一个使某些应用程序无法在 64 位环境中运行的问题。

文件名: WindowsServer2003-KB904639-x86-CHS.exe

版本: 904639

知识库 (KB) 文章: KB904639

发布日期: 2005/10/24

语言: 简体中文

下载大小: 560 KB

概述:
安装本更新程序可以解决一个使某些应用程序无法在 64 位环境中运行的问题。
尝试运行使用 Microsoft 数据访问组件 (MDAC) 2.8 的接口远程处理组件的 64 位应用程序时,
您可能会收到“access violation”(访问冲突)错误消息,
或者在使用任务管理器查看时 dllhost.exe 进程可能会显示 100% CPU 占用率。
安装本更新程序之后,可能需要重新启动计算机。


莫非这就是传说中的Cut the Gordian Knot的亚历山大之剑?抑或是达摩克利斯之剑?

试。

果然--不爽。

念去去。

千里烟波。

凝噎。无语。崩溃。

<十三>

又找其他的补丁。

没有合格的。

D7仍启动仍报错:Can't load package:dclite70.bpl。

但在PC机上(Enterprise Edition + Service Pack 1)是可以的。

诅咒Microsoft。

废池乔木。

犹厌言兵。

崩溃中。

<十四>

怎么办?

接着搜。

随便。摧残。

飞沙走石。天昏地暗。

风雨如晦。鸡鸣不已。

黄河之水天上来。

一片孤城万仞山。

两岸猿声啼不住。

日照香炉升紫烟。

如履薄冰。如临深渊。

如芒在背。如坐针毡。

如切如磋。如琢如磨。

<十五>

最是那一低头的温柔,恰似水莲花不胜凉风的娇羞。

以dclite70.bpl为关键字,搜索。

感谢互联网吧!

感谢搜索引擎吧!

感谢发贴回贴的兄弟吧!

俺的神啊上帝以及老天爷啊!

亚历山大来了!

在52SDN找到一个标题为“delphi 7 能不能在windows 2003 server上安装?”的帖子。

内容如下:

安装在2003上想试试,没想到打开提示dclite70.bpl访问非法地址。

后果就是项目的选项窗口打不开(访问非法地址)。

那位兄弟有解决办法?

------------

安装过的兄弟提示一下,谢谢!

------------

可以...我装过了...

------------

对delphi 关闭数据执行保护就好了 :)

------------

看到最后一行!

疯了!

<十六>

右击“我的电脑”。单击“属性”。

在“系统属性”中单击“高级”。

在“性能”中单击“设置”。

在“性能选项”中单击“数据执行保护”。

单击“添加”。选择要运行的程序。

OK。就这么简单。

<十七>

借用温大侠的话。

如鹤临风。

如鸢凌空。

如鸾舞松。

如鹏回峰。

疯了!

<十八>

小项,before Game Over,say:天亡我,非用兵之罪也。

Windows 2003 Standard Edition。

今天,你疯了没有!?

小嘴补充:可以用程序操作注册表完成这个操作哦

// DEP注册检查
function DEPReg():boolean;
var
    Reg:TRegistry;
    sServiceRegKey:String;
begin
    Reg:=TRegistry.Create;
    Reg.RootKey:=HKEY_LOCAL_MACHINE;
    try
        sServiceRegKey:= '\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers';
        if Reg.OpenKey(sServiceRegKey,true) then
        begin
            if not reg.ValueExists(Application.Exename) then
            Reg.WriteString(Application.Exename,'DisableNXShowUI');
        end;
    finally
        Reg.CloseKey;
        Reg.Free;
    end;
    //sleep(3000);
end;


已标记关键词 清除标记
相关推荐
DirectX修复工具(DirectX Repair)是一款系统级工具软件,简便易用。本程序为绿色版,无需安装,可直接运行。 本程序的主要功能是检测当前系统的DirectX状态,如果发现异常则进行修复。程序主要针对0xc000007b问题设计,可以完美修复该问题。本程序中包含了最新版的DirectX redist(Jun2010),并且全部DX文件都有Microsoft的数字签名,安全放心。 本程序为了应对一般电脑用户的使用,采用了易用的一键式设计,只要点击主界面上的“检测并修复”按钮,程序就会自动完成校验、检测、下载、修复以及注册的全部功能,无需用户的介入,大大降低了使用难度。在常规修复过程中,程序还会自动检测DirectX加速状态,在异常给予用户相应提示。 本程序适用于多个操作系统,如Windows XP(需先安装.NET 2.0,详情请参阅“致Windows XP用户.txt”文件)、Windows Vista、Windows 7Windows 8、Windows 8.1、Windows 8.1 Update、Windows 10,同兼容32位操作系统和64位操作系统。本程序会根据系统的不同,自动调整任务模式,无需用户进行设置。 本程序的V4.0版分为标准版、增强版以及在线修复版。所有版本都支持修复DirectX的功能,而增强版则额外支持修复c++的功能。在线修复版功能与标准版相同,但其所需的数据包需要在修复自动下载。各个版本之间,主程序完全相同,只是其配套使用的数据包不同。因此,标准版和在线修复版可以通过补全扩展包的形式成为增强版。本程序自V3.5版起,自带扩展功能。只要在主界面的“工具”菜单下打开“选项”对话框,找到“扩展”标签,点击其中的“开始扩展”按钮即可。扩展过程需要Internet连接,扩展成功后新的数据包可自动生效。扩展用根据网络速度不同而不同,最快仅需数秒,最慢需要数分钟,烦请耐心等待。如扩展失败,可点击“扩展”界面左上角小锁图标切换为加密连接,即可很大程度上避免因防火墙或其他原因导致的连接失败。 本程序自V2.0版起采用全新的底层程序架构,使用了异步多线程编程技术,使得检测、下载、修复单独进行,互不干扰,快速如飞。新程序更改了自我校验方式,因此使用新版本的程序不会再出现自我校验失败的错误;但并非取消自我校验,因此程序安全性与之前版本相同,并未降低。 程序有更新系统c++功能。由于绝大多数软件运行需要c++的支持,并且c++的异常也会导致0xc000007b错误,因此程序在检测修复的同,也会根据需要更新系统中的c++组件。自V3.2版本开始使用了全新的c++扩展包,可以大幅提高工业软件修复成功的概率。修复c++的功能仅限于增强版,标准版及在线修复版在系统c++异常(非丢失)会提示用户使用增强版进行修复。除常规修复外,新版程序还支持C++强力修复功能。当常规修复无效,可以到本程序的选项界面内开启强力修复功能,可大幅提高修复成功率。请注意,请仅在常规修复无效再使用此功能。 程序有两种窗口样式。正常模式即默认样式,适合绝大多数用户使用。另有一种简约模式,此窗口将只显示最基本的内容,修复会自动进行,修复完成10秒钟后会自动退出。该窗口样式可以使修复工作变得更加简单快速,同方便其他软件、游戏将本程序内嵌,即可进行无需人工参与的快速修复。开启简约模式的方法是:打开程序所在目录下的“Settings.ini”文件(如果没有可以自己创建),将其中的“FormStyle”一项的值改为“Simple”并保存即可。 新版程序支持命令行运行模式。在命令行中调用本程序,可以在路径后直接添加命令进行相应的设置。常见的命令有7类,分别是设置语言的命令、设置窗口模式的命令,设置安全级别的命令、开启强力修复的命令、设置c++修复模式的命令、控制Direct加速的命令、显示版权信息的命令。具体命令名称可以通过“/help”或“/?”进行查询。 程序有高级筛选功能,开启该功能后用户可以自主选择要修复的文件,避免了其他不必要的修复工作。同,也支持通过文件进行辅助筛选,只要在程序目录下建立“Filter.dat”文件,其中的每一行一个需要修复文件的序号即可。该功能仅针对高级用户使用,并且必须在正常窗口模式下才有效(简约模式无效)。 本程序有自动记录日志功能,可以记录每一次检测修复结果,方便在出现问题,及分析和查找原因,以便找到解决办法。 程序的“选项”对话框中包含了7项高级功能。点击"常规”选项卡可以调整程序的基本运行情况,包括日志记录、安全级别控制、调试模式开启等。只有开启调试模式后才能在C
<p> <strong><span style="font-size:16px;color:#003399;">手工测试中遇到的坑 你踩过几个?</span></strong><strong><span style="font-size:16px;color:#003399;"></span></strong> </p> <p> <br /> </p> <p> <img src="https://img-bss.csdnimg.cn/202012171208356126.png" alt="" /> </p> <p> <br /> </p> <p> <br /> </p> <p> <strong><span style="font-size:16px;color:#003399;">解锁自动化测试技能 打破手工测试局限</span></strong> </p> <p> <br /> </p> <p> <span style="font-size:14px;">自动化测试是测试工作的一部分,是对手工测试的一种补充。自动化测试是相对手工测试而存在的,通过所开发</span><span style="font-size:14px;">的软件测试工具、脚本等来实现,具有良好的可操作性、可重复使用和高效率等特点。</span> </p> <p> <span style="font-size:14px;"><br /> </span> </p> <p> <span style="font-size:14px;"><img src="https://img-bss.csdnimg.cn/202012171212024924.png" alt="" /><br /> </span> </p> <p> <span style="font-size:14px;"><br /> </span> </p> <p> <br /> </p> <p> <br /> </p> <p> <span style="font-size:16px;color:#003399;"><strong>Python自动化测试</strong></span> </p> <p> <span style="font-size:14px;"><strong><span style="font-size:16px;color:#003399;">系统教学+实战分析 简单易上手</span></strong><strong><span style="font-size:16px;color:#003399;"></span></strong><strong><span style="font-size:16px;color:#003399;"></span></strong><br /> </span> </p> <p> <span style="font-size:14px;"><br /> </span> </p> <p> <span style="font-size:14px;">课程使用的是语法简洁、提供丰富的测试库和框架的Python语言,并从测试人员的角度,梳理当前最热门的自动化测试框架和常用库,并通过实战,带你快速建立自动化测试技术体系,让测试工作更高效!<br /> </span> </p> <p> <span style="font-size:14px;"><br /> </span> </p> <p> <span style="font-size:14px;"><img src="https://img-bss.csdnimg.cn/202012171223546601.png" alt="" /><br /> </span> </p> <p> <br /> </p> <p> <br /> </p> <p> <strong><span style="font-size:16px;color:#003399;">3个项目实战</span></strong> </p> <p> <strong><span style="font-size:16px;color:#003399;">全程手敲代码演示 听得懂 更要会用</span></strong><strong><span style="font-size:16px;color:#003399;"></span></strong> </p> <p> <br /> </p> <p> <img src="https://img-bss.csdnimg.cn/202012171224069333.png" alt="" /> </p> <p> <br /> </p> <p> <br /> </p> <p> <strong><span style="font-size:16px;color:#003399;">3大购课福利</span></strong> </p> <p> <br /> </p> <p> <img src="https://img-bss.csdnimg.cn/202012180149359103.png" alt="" /> </p>
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页