careychen 尊榮會員
    

發表:41
回覆:580
積分:954
註冊:2004-03-03
發送簡訊給我
|
 |
|
如果沒記錯的話,在 Request.RemoteAddr 就可以取得來源者的 ip 您試試 ===================引 用 boson 文 章=================== 剛開始撰寫 ISAPI 型式的 WebService 程式, 突然發現不知道如何取得 request 來自哪個 IP, 請有經驗的朋友幫忙一下, 謝謝 |
------ 價值的展現,來自於你用哪一個角度來看待它!! |
|
careychen 尊榮會員
    

發表:41
回覆:580
積分:954
註冊:2004-03-03
發送簡訊給我
|
 |
|
好奇的問一下,您是用 Web Services -> SOAP Server Application 嗎? 然後選擇第一個 ISAPI/CGI 的那一個嗎? 如果是的話,有 Web Module 可以用,還是您是怎麼開始您的 Project 的? ===================引 用 boson 文 章=================== Request 應該是 WebModule 的 property, 但我是寫 ISAPI/CGI 的 WebService , 無法存取 WebModule |
------ 價值的展現,來自於你用哪一個角度來看待它!! |
|
boson 中階會員
 

發表:64
回覆:139
積分:80
註冊:2004-07-31
發送簡訊給我
|
 |
|
對, 我是建立 SOAP Server Application , 並選取 CGI Stand-alone excutable 的型態, Service Name 我設為 MyService, 於是 Delphi 自動幫我建立了 Project1.dpr , Unit1.pas, MyServiceIntf.pas, MyServiceImpl.pas 幾個檔案, 我加上幾行程式在 MyServiceImpl 與 MyServiceIntf MyServiceIntf.pas 內容為 :
而 MyServiceImpl.pas 內容為 :
Project1.dpr 內容為 :
我另開一個專案, 在 Form 上放一個 Button, 再放一個 HTTPRIO 元件, 然後 use MyServiceIntf 設定好 HTTPRIO 的必要 property 之後, 在 Button 的 forbidden 事件中寫下一行程式 :
執行結果, 得到的是 Access violation 訊息 我在網路上搜尋相關文章, 好像 CGI/ISAPI 型式的 WebService 不能存取 WebModule ?
|
|
|
careychen 尊榮會員
    

發表:41
回覆:580
積分:954
註冊:2004-03-03
發送簡訊給我
|
 |
|
Hi, 我寫了個 Sample 依您的命名方式,您先直接看一下 SOAP CGI Sample Code測試方法 1、將 CGISample.exe Copy 至您的 IIS 的 root 底下 2、啟動瀏灠器輸入以下兩個 url a、 http://localhost/CGISample.exe/ ==> Path / 第一個 WebActionItem ↑ (記得在 exe 後要加個 / ) 不然 XP 的不會錯,一上 2003 就會出錯哦!!! b、 http://localhost/CGISample.exe/Test ==> Path /Test 第二個 WebActionItem 並請注意以下事情 使用 IIS 5 (XP) 請在 IIS 的網站 -> 主目錄 -> 使用權限 -> 選擇【指令碼及執行檔】 使用 IIS 6 (2003) 除了上面步驟要設定外,還得在 【網頁服務延伸】中將【所有未知的 CGI 擴充程式】設為【已允許】 祝您順利 ===================引 用 boson 文 章=================== 就是使用了 Unit1 裏面的 WebModule , 結果發生了 Access violation 錯誤 雖然在 Project1.dpr 裏面, 已經執行了 Application .CreateForm(TWebModule1, WebModule1); 好像 WebModule 已經被 Create 了, 但卻是不能使用的
如果無法存取 WebModule , 那就不知道要從哪裏取得對方的 IP ?
|
------ 價值的展現,來自於你用哪一個角度來看待它!! |
|
|
|
|
boson 中階會員
 

發表:64
回覆:139
積分:80
註冊:2004-07-31
發送簡訊給我
|
 |
|
多謝你寫了個 Sample , 不過你我說的是不一樣的東西
你的 Sample 雖然是從 SOAP Server Application 這個精靈建立的, 但你其實是使用 WebBroker 技術, 把程式碼寫在 WebModule 底下, 並依 WebAction 來執行不同的動作, 基本上 WebBroker 程式輸出結果是 HTML 文件, 可以直接顯示在網頁上
而我說的是 WebService 技術, 程式碼寫在 *impl.pas 所建立的物件當中(請參見前面貼出的程式碼), 基本上, WebService 輸出的是 xml 文件, 需要在 Client 加以解析, 以從中取得需要的資料, 例如 Delphi 就提供了 HTTPRIO 元件來做這個解析的動作
我的問題關鍵在於, WebService 的程式, 無法從 *impl.pas 呼叫 WebModule, 因此無法使用 WebModule.Request 等等 property
我查了一下 Google, 發現 *impl.pas 無法使用 WebModule 這似乎是理所當然的事, 但我就不曉得除此之外, 能從哪裏取得 client 的 IP ?
|
|
|
|