<一>
用D7寫了一個(gè)調(diào)用C#的WebService客戶端程序。開了一個(gè)線程,定時(shí)訪問WebSerice的接口。
程序在我的本本上(WINXP)測(cè)試時(shí),跑的很歡暢。
?
<二>
昨天晚上,把這個(gè)WebService客戶端以NT服務(wù)的形式注冊(cè)部署到服務(wù)器上(Win2003 Server)。
這樣開機(jī)后便可以服務(wù)方式自動(dòng)運(yùn)行,不用人工監(jiān)管。
待部署完畢后,啟動(dòng)服務(wù)。但執(zhí)行時(shí)間一到,日志中監(jiān)測(cè)到報(bào)錯(cuò):調(diào)用WebService時(shí)異常。
可原本好好的,咋這就納悶了呢!?
并且這是個(gè)很簡(jiǎn)單的東東,于是,郁悶。
服務(wù)器沒有IDE環(huán)境,Debug非常痛苦,日志記錄跟蹤。
跟蹤發(fā)現(xiàn),得到WebService對(duì)象的時(shí)候是沒有問題的,但在調(diào)用其接口的時(shí)候產(chǎn)生了異常。
又單獨(dú)寫了WebService客戶端可執(zhí)行的測(cè)試程序,在服務(wù)器上運(yùn)行。
結(jié)果Throw出的Exception是“Access violation at address 00E24255. Write of address 00E24255”。
暈菜。這就是出名的“Access violation”。
沒辦法,解決問題吧。
通常訪問對(duì)象(內(nèi)存地址)不存在或COM異常時(shí)會(huì)有這種報(bào)錯(cuò)。
先在網(wǎng)上搜,看看是不是WebService的問題。
baidu+google,搜個(gè)底朝天,無解,繼續(xù)郁悶。
“Access Violation”果真是大名鼎鼎--“最令人氣惱的Windows程序遇到的錯(cuò)誤之一”。
關(guān)于“Access violation”,的確有N多條記錄被搜到,但無對(duì)癥的。
其中說法不一,各有特色。
有關(guān)于系統(tǒng)dll的,有關(guān)于硬件設(shè)備及其驅(qū)動(dòng)的。
還有一貼,好像是老貓寫的,關(guān)于Delphi Access violations 問題的解決之道,亦非我所需者。
另有一貼,說是線程中訪問ADO的問題,但我已經(jīng)初試化了COM接口。
于是打開程序,把線程排查看了一邊,沒問題,好好的。
另外,一般關(guān)于Delphi打造WebService客戶端的例子中,都會(huì)提到THTTPRIO的。
而我一向是不用這個(gè)東東的,嫌麻煩。
莫非是這個(gè)小東東在搞鬼,它也就是起到接口轉(zhuǎn)換的作用。
我加了一個(gè)。轉(zhuǎn)了一下。試了一次。
徒增加了一點(diǎn)郁悶。
?
<三>
接下來琢磨:程序在筆記本上無誤,但部署在到服務(wù)器上出錯(cuò)。說明服務(wù)器的環(huán)境有問題,而非程序本身之過。
莫非在線程中調(diào)用WebService服務(wù),在客戶端需要部署什么插件或注冊(cè)什么東東乎?
就象部署MIDAS的時(shí)候,需要注冊(cè)midas.dll一樣。
于是乎,狂搜。
在CSDN上發(fā)現(xiàn)了一個(gè)哥們說--
? >使用Delphi在客戶端調(diào)用WebService
? >確保你的電腦上裝了SoapToolkit
? >新建項(xiàng)目,要Uses ComObj
很好奇:SoapToolkit。
于是乎,搜。下載。
把“SoapToolkit30.EXE”,裝到服務(wù)器上。
然,問題依然。
可選擇的:急死,或氣死。
?
<四>
時(shí)值深夜,大雨如注。
抓耳撓腮,百思不解。
蚊蟲襲來,渾然不覺。
青燈古佛,頗有禪意。
凄凄慘慘戚戚中,我只能獨(dú)自一遍一遍大喊:買嘎的!買嘎的!
再想辦法~~
待從頭,收拾舊山河。
?
<五>
想來想去,沒辦法了。換臺(tái)機(jī)子試試。
于是找了一臺(tái)PC,同樣是Win2003 Server。
試了。沒有問題。
信心大增。
突然,慢著--莫非是Delphi的問題?--這臺(tái)PC上裝有D7的IDE,而服務(wù)器上沒有安裝Delphi。
莫非在Delphi在安裝的時(shí)候,注冊(cè)了什么東東,這樣WebService客戶端就可以運(yùn)行了。
而沒有安裝IED的機(jī)器就不能運(yùn)行?--按說不會(huì),調(diào)用WebService不會(huì)太依賴客戶端的環(huán)境。
但,總結(jié)以往血淋淋的教訓(xùn),從業(yè)的經(jīng)驗(yàn)告訴過我們--這是值得試試的。
高人曾說過:絕望的時(shí)候,稻草是可以救命的。
?
<六>
我的稻草是一張D7的安裝光盤,哪怕是盜版的。 *_*
But,就在這個(gè)深夜--華南的多雨的悶熱的深夜里--我的稻草沒有在身邊。 :(
(轉(zhuǎn)折句,的確能夠加強(qiáng)語感,我喜歡!)??????????
它在光盤包里。光盤包在行李箱里。而行李箱在住所。
住所在X公里外(X>=5)。
?
<七>
坐上車的時(shí)候,雨已經(jīng)停了。
回到住所,巴西正對(duì)克羅地亞。
那群跳桑巴舞的家伙在拼命的時(shí)候,WK,我也在北京時(shí)間里奮斗。
不過,對(duì)不起了,兄弟們!你們繼續(xù),俺洗洗睡了。
天生對(duì)某些運(yùn)動(dòng)不敢興趣。
輾轉(zhuǎn)反側(cè)。
繞樹三匝。
終于睡去。
?
<八>
7點(diǎn)01分,短信。是昨夜比賽結(jié)果。免費(fèi)贈(zèng)的。
起床。
D7光盤。
吃點(diǎn)喝點(diǎn)。
上班。
?
<九>
D7在哪里?D7在光盤上。光盤在光驅(qū)中。
光盤是好光盤。光驅(qū)是好光驅(qū)。不錯(cuò)。
茶葉還沒有泡展,已安裝完畢。
對(duì)一些人來說,我們深愛著D7--我們吃飯的家伙。
欣欣然。
D7的啟動(dòng)畫面已經(jīng)在Win2003 Server的服務(wù)器上出現(xiàn)了。
但是,報(bào)錯(cuò)了--
是“Can't load package:dclite70.bpl”的異常。
同樣顯示的,還有“Access Violation”的錯(cuò)誤。
我,臉綠了。
不止是簡(jiǎn)單的faint!
難道安裝出有問題了?在安裝時(shí)沒有報(bào)錯(cuò)。
第一次遇到這種問題--我信賴的D7啊!
要有懷疑精神。懷疑自己安裝錯(cuò)了。
卸載。
OS重啟。
再次安裝。
再次安裝完畢。
再次啟動(dòng)D7。
再次是“Can't load package:dclite70.bpl”的異常。
再次顯示的,還有“Access Violation”的錯(cuò)誤。
于是,開始缺氧+眩暈。
?
<十>
從昏厥中醒來,深深太平洋的深深質(zhì)疑 Win2003 Server + D7 的組合。
而且,這個(gè)還是個(gè)“刀片”服務(wù)器。
當(dāng)時(shí),有了一個(gè)決定。
凡遇到用Win2003者,先爆打一頓,弄成半死不活,半身不遂,半條命,爆頭。
然后再用“刀片”想法弄成醬。
醬油也行。
:"(
?
<十一>
行走江湖。安全第一。
風(fēng)平浪靜。海闊天空。
平時(shí)對(duì)Win2003使用不多,了解不深。
看了看系統(tǒng),是Standard Edition + Service Pack 1的。
上網(wǎng)了解了一下,N個(gè)人曾在Win2003 Server下遇到過各種各樣的“Access Violation”。
打過各種各樣的補(bǔ)丁。
又特意去看了看那臺(tái)PC,裝的是Enterprise Edition + Service Pack 1的。
版本果然不一樣。
于是,找補(bǔ)丁。
期待--驀然回首。那X卻X。
?
<十二>
百二秦關(guān)終屬楚。
三千越甲可吞吳。
微軟的補(bǔ)丁可真及時(shí),勘比宋押司。
補(bǔ)丁號(hào)碼是:KB904639
名稱是:Windows Server 2003(32 位 x86)更新程序 (KB904639)
快速描述:安裝本更新程序可以解決一個(gè)使某些應(yīng)用程序無法在 64 位環(huán)境中運(yùn)行的問題。
文件名: WindowsServer2003-KB904639-x86-CHS.exe
?
版本: 904639
知識(shí)庫 (KB) 文章: KB904639?
發(fā)布日期: 2005/10/24
語言: 簡(jiǎn)體中文
?
下載大小: 560 KB
概述:
安裝本更新程序可以解決一個(gè)使某些應(yīng)用程序無法在 64 位環(huán)境中運(yùn)行的問題。
嘗試運(yùn)行使用 Microsoft 數(shù)據(jù)訪問組件 (MDAC) 2.8 的接口遠(yuǎn)程處理組件的 64 位應(yīng)用程序時(shí),
您可能會(huì)收到“access violation”(訪問沖突)錯(cuò)誤消息,
或者在使用任務(wù)管理器查看時(shí) dllhost.exe 進(jìn)程可能會(huì)顯示 100% CPU 占用率。
安裝本更新程序之后,可能需要重新啟動(dòng)計(jì)算機(jī)。
莫非這就是傳說中的Cut the Gordian Knot的亞歷山大之劍?抑或是達(dá)摩克利斯之劍?
試。
果然--不爽。
念去去。
千里煙波。
凝噎。無語。崩潰。
?
<十三>
又找其他的補(bǔ)丁。
沒有合格的。
D7仍啟動(dòng)仍報(bào)錯(cuò):Can't load package:dclite70.bpl。
但在PC機(jī)上(Enterprise Edition + Service Pack 1)是可以的。
詛咒Microsoft。
廢池喬木。
猶厭言兵。
崩潰中。
?
<十四>
怎么辦?
接著搜。
隨便。摧殘。
飛沙走石。天昏地暗。
風(fēng)雨如晦。雞鳴不已。
黃河之水天上來。
一片孤城萬仞山。
兩岸猿聲啼不住。
日照香爐升紫煙。
如履薄冰。如臨深淵。
如芒在背。如坐針氈。
如切如磋。如琢如磨。
?
<十五>
最是那一低頭的溫柔,恰似水蓮花不勝?zèng)鲲L(fēng)的嬌羞。
以dclite70.bpl為關(guān)鍵字,搜索。
感謝互聯(lián)網(wǎng)吧!
感謝搜索引擎吧!
感謝發(fā)貼回貼的兄弟吧!
俺的神啊上帝以及老天爺啊!
亞歷山大來了!
在52SDN找到一個(gè)標(biāo)題為“delphi 7 能不能在windows 2003 server上安裝?”的帖子。
內(nèi)容如下:
安裝在2003上想試試,沒想到打開提示dclite70.bpl訪問非法地址。
后果就是項(xiàng)目的選項(xiàng)窗口打不開(訪問非法地址)。
那位兄弟有解決辦法?
------------
安裝過的兄弟提示一下,謝謝!
------------
可以...我裝過了...
------------
對(duì)delphi 關(guān)閉數(shù)據(jù)執(zhí)行保護(hù)就好了 :)
------------
看到最后一行!
瘋了!
?
<十六>
右擊“我的電腦”。單擊“屬性”。
在“系統(tǒng)屬性”中單擊“高級(jí)”。
在“性能”中單擊“設(shè)置”。
在“性能選項(xiàng)”中單擊“數(shù)據(jù)執(zhí)行保護(hù)”。
單擊“添加”。選擇要運(yùn)行的程序。
OK。就這么簡(jiǎn)單。
?
<十七>
借用溫大俠的話。
如鶴臨風(fēng)。
如鳶凌空。
如鸞舞松。
如鵬回峰。
瘋了!
?
<十八>
小項(xiàng),before Game Over,say:天亡我,非用兵之罪也。
Windows 2003 Standard Edition。
今天,你瘋了沒有!?
?
??????????????????????????????????????????????????????? ????????????? ????? By? JRQ
???????????????????????????????????????????????????????????? ?? 2006/06/14 夜? 小記于穗
Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=797566