uj5u.com熱心網友回復:
用 dw 的 savaas() 存為 xml, 并在 ws 中回傳該檔案的 httpuj5u.com熱心網友回復:
能說的再具體點么
uj5u.com熱心網友回復:
還有,只能是回傳json或是xml么,真的不能直接回傳dataset???uj5u.com熱心網友回復:
是的,dataset是和資料庫相關聯的,無法回傳,你可以把資料保存到list或者用Json和Xml之類的
直接回傳dataset是不可能的
uj5u.com熱心網友回復:
saveas () 的 xml 檔案會生成在 wwwroot 中你的 ws 的某個臨時目錄下,你只要指定檔案名即可。c# 是支持 xml 直接匯入 dataset 的。
uj5u.com熱心網友回復:
真的不行,我試了N次了,就是沒有保存上,不管是用saveas()或是fileopen,filewrite都不行啊,求教中。。。。。。。
uj5u.com熱心網友回復:
我做的方法是,ws函式直接回傳resultset,ws會自動轉換,我不知道C#認不認,但我知道其他開發語言都認的。你可以試試!uj5u.com熱心網友回復:
這是 pb12 開發 ws 的一些注意事項,樓主找一下可能出的問題,肯定是可以匯出 xml 的。系統環境:winxp sp2 + oracle10g + iis5.1
1. 檢查本機 iis 是否正常,若 iis 不能運行或瀏覽默認網頁時報權限類錯誤,檢查“本地用戶和組”中 3 個相關的內置賬號是否啟用(啟動 iis, asp.net, internet 來賓)。
2. pb12.0 開發 ws,必須安裝 framework3.5 sp1 和 framework sdk2.0,為簡單起見,直接安裝 vs2008(含工具字樣的組件即可),之后再打 vs2008 sp1 補丁,微軟官網的那個補丁包需要用較新版本的 iso 工具才能正常讀出。
3. 由于 .net 語法更為嚴格,有符號和無符號的同型別數值變數不能做互相賦值或比較等操作,例如:int 和 uint;此問題可能會導致發布時 pb 直接崩潰!
4. 無符號數值型別不能用于遞級訓圈,例如:for uint = 100 to 1 step -1;發布時通常會給出編譯警告,但有時卻會導致 pb 例外關閉!
5. 全域函式不能使用 this 代詞,可用 GetApplication() 替代。
6. 在 c/s 應用中呼叫 ws,需要把 ..\share\powerbuilder 中的 pbsoapclient120.pbd(java 標準)或 pbwsclient120.pbd(.net 標準)檔案加入到 target 的庫串列中;它們分別對應 EasySOAP 和 .Net 引擎。
7. 使用 .net target 做客戶端應用的話,必須把 pbwsclient120.pbx 匯入到自已的 pbl 中;如果匯入報錯的話,可以從 pb 自帶的 ws 例程中匯出相關的 3 個物件為 *.sr* 檔案,再匯入自己的 pbl 里。
8. 如果呼叫 ws 時 CreateInstance() 出現 runtime 錯誤,則可能是由于老版本 pb 在 system32 目錄下放有與 pb 共享目錄下同名的老版本 dll,洗掉或用新版本 dll 覆寫即可(如 libeay32.dll)。
9. 發布 ws 的詳細日志檔案可以在本工程下的 pb2cstempout 目錄中找到。
10. FileOpen() 必須用流模式,所以 FileWriteEx() 也必須用 blob 型別。
11. (尚待進一步研究)不能直接讀寫 iis 虛擬目錄以外的檔案,必須把其添加到 iis 的虛擬目錄中;同時要保證該檔案所在目錄及上層目錄 asp.net 擁有相應的訪問權限;虛擬目錄的真實路徑可用 MapVirtualPath() 取得,但不能用真實路徑訪問虛擬目錄的檔案,也不能以相對路徑訪問應用的上層目錄及檔案(僅可訪問 /app_root/file/session/__webservice__/c 中會話產生的臨時目錄及檔案)。
12. 發布給外界呼叫的 ws 函式不允許多載(這的確是個很糟糕的限制)。
13. 應用物件不能宣告實體變數,全域變數只對當前會話有效;應用物件的腳本不會執行;以 post 方式呼叫的函式不會執行。
14. 創建物件時所用的模板型別必須和宣告的一致,不能降級構造;例如:繼承自 transaction 的自定義物件 n_tran_base,宣告為 n_tran_base itran_obj,則實體化時不可以寫成 itran_obj = create transaction(賦值、比較操作同理)。
15. 資料庫驅動目錄須要設定 asp.net 的訪問權限(重啟),如 c:\oracle\product\10.1.0\client_1。
16. 要使用 sybase datawindow ps 列印機,需要在列印機的安全設定里添加上 asp.net, internet 來賓, network service, 啟動 iis 四個賬號為允許列印(第一次列印時必須設定,之后可以洗掉),方可確保 PrintDatawindow(), Print(), SaveAs() 這些函式能正常生成 pdf 檔案(但 db ole 控制元件的內容不能顯示)。
17. 可以通過 inet 和 internetresult 兩物件的配合,獲得 /app_root/print/session/__webservice__ 列印目錄下的檔案串列,并分析出列印后的正確檔案名;同理,亦可用此方法獲得 pdf 檔案的內容。
18. (尚待進一步研究)Run() 函式已失效,可用 API 替代,如 CreateProcess() 啟動服務端的 exe 檔案,但受限于 iis 的權限控制,只能在任務管理器中看到此行程,并不能正常運行(即便是無界面的 exe 也是如此)。
19. (尚待進一步研究)據 sybase 新聞組的說法,ole 物件在 .net 應用中無法使用,這并不是 pb 的限制,而是微軟自身的問題。所以 db ole 控制元件也失效了,如果仍想在客戶端使用的話,可在檢索含有 db ole 的資料視窗時轉交給 c/s 程式執行,然后再傳回 ws。
20. 關于行程間通訊,DDE 僅能建立管道,但無法執行鏈接;Send() 函式已失效,只有通過 API SendMessage() 向服務端行程發送訊息(ws 沒有視窗句柄,不能收到訊息),本應使用 WM_COPYDATA 通過共享記憶體來傳遞資料(在 other 中攔截 message.number=74),但服務端行程收到的卻是錯誤資料;既然只能傳遞訊息本身,倒不如用 pbm_custom01(1024) 更加簡單。
21. 若資料庫驅動不能使用 iis 連接池的話,則必須在 ws 執行完成后,由代碼主動斷開連接;但由于 ws 的析構事件不會在退出時立即執行,所以必須在每個介面函式回傳前斷開連接;而且,為防止函式中忘記斷開或例外退出,析構事件仍需寫上 disconnect;。
22. isNull() 函式已失效,改用其它方法判斷,例如 len() = 0。
23. 發布到 iis 時不要中止,否則可能導致 iis 損壞。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/51112.html
標籤:Web 應用
