請問IntraWeb ISAPI程式內如何設定資料庫路徑? |
答題得分者是:Brian77
|
David
一般會員 發表:13 回覆:26 積分:7 註冊:2002-04-14 發送簡訊給我 |
請問各位先進:
目前我利用IntraWeb ado建構ISAPI程式,一開始我先用StandAlone程式測試時沒有問題,為了設計上的靈活考量,我將資料庫的連結寫在程式內,並先用變數設定後再指定給ADOConnection,變數是藉由ExtractFilePath( ParamStr(0) )找到Server主機上的路徑,StandAlone程式執行後沒有問題。當我改成ISAPI程式後執行時卻發生資料庫路徑讀取錯誤訊息,debug後發現:因為ISAPI是由DLLHost.exe呼叫的,該程式路徑在C:\WINNT\System32下,所以用ExtractFilePath( ParamStr(0) )得到的變數內容便是C:\WINNT\System32,而我的dll檔案與mdb資料庫檔案卻可能是在D:\XXX\...,所以我的問題是:如何取得Server主機上的路徑?我記得ASP有個語法Server.MapPath("...")可以取得某網站的本機路徑,不知道在Delphi IntraWeb中如何做到?還是有其他方法可設定或讀取某個路徑變數... 另外,想請教另一個問題:有時isapi編譯的DLL程式執行後發生問題時,當作完修改後想重新編譯測試時,卻發生因為上次執行的session還未結束,導致dll檔還在使用中(我想應該是dllhost.exe還Hold住),導致Delphi無法覆蓋dll檔案而編譯失敗,不知有沒有什麼方法能釋放該dll嗎? 請各位先進能不吝指教。Thanks for your help.
|
Brian77
中階會員 發表:8 回覆:114 積分:94 註冊:2002-05-17 發送簡訊給我 |
路徑的取得:
var FN: array [0..MAX_PATH-1] of char; ScriptName:String; begin SetString(ScriptName,FN,GetModuleFileName(hInstance,FN,SizeOf(FN))); // ScriptName 即該 exe 或 dll 的檔名含路徑 (相當於 exeName) end;DLLHost.exe 會 Hold 住, 可叫出工作管理員檢查 "處理程序", 會有數項DLLHost.exe, 其中一項的使用者類似 "IWAM_電腦名稱", 把它結束掉, 就好了 |
David
一般會員 發表:13 回覆:26 積分:7 註冊:2002-04-14 發送簡訊給我 |
引言: 路徑的取得:首先感謝前輩的不吝指教。 依照您的指引已經可以抓到DLL所在目錄了,原先我以為只是某個物件的Property即可取得,沒想到它得用到一般Windows DLL,不知道在web上會不會造成什麼影響,但至少已經可以解決目前難關,真是感謝您的指導。 另外有關DLLHost.exe 會 Hold 住一事,我之前也是想要結束它的Process,但總會先出現一個警告視窗,選取’是’按鈕後又出現’這項操作無法完成,存取被拒’的視窗,所以無法順利釋放該dll檔案,不知前輩還有其他方式可以解決嗎? 再次謝謝您的幫忙。var FN: array [0..MAX_PATH-1] of char; ScriptName:String; begin SetString(ScriptName,FN,GetModuleFileName(hInstance,FN,SizeOf(FN))); // ScriptName 即該 exe 或 dll 的檔名含路徑 (相當於 exeName) end;DLLHost.exe 會 Hold 住, 可叫出工作管理員檢查 "處理程序", 會有數項DLLHost.exe, 其中一項的使用者類似 "IWAM_電腦名稱", 把它結束掉, 就好了 |
ha0009
版主 發表:16 回覆:507 積分:639 註冊:2002-03-16 發送簡訊給我 |
|
Brian77
中階會員 發表:8 回覆:114 積分:94 註冊:2002-05-17 發送簡訊給我 |
|
David
一般會員 發表:13 回覆:26 積分:7 註冊:2002-04-14 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |