Web Service界接-前言

合作業主中有位對coding特別有興趣,前些日子提出界接Web Service需求,不過也僅止於有興趣吧,不然piggy也不會進行這項測試XDD

本次任務:
1.使用第三方發佈之WebService(url已知)
2.透過帳號存取權限內的資料(帳密已知)

遭遇情境:
1.在對方只給url情況下,一切資訊只能由WSDL取得
2.WebService帶有帳號驗證,有的Developer寫在WebMethod(不建議),有的以SOAPHeader建構,界接方法因此而異。
此次使用之Web Service採正規方式賦予資料存取權限(即SOAPHeader),在Web測試介面中,沒有所謂的帳號&密碼input box,無法於界接前先行測試,即使wcftestclient(WCF測試用戶端)都無法滿足此需求。

測試結果:
1.傳遞帳號/密碼予Web Service後,無法進行其他後續操作。
HTTP 狀態 407 : Proxy Authentication Required ( The ISA Server requires authorization to fulfill the request. Access to the Web Proxy service is denied. )。
2.帳號/密碼通過驗證後已可進行其他操作 ,操作卻面臨逾時狀況。
已超過連接逾時的設定。在作業完成之前超過逾時等待的時間,或者是伺服器未回應。

解決辦法:
1.原因在於piggy公司內部設有proxy,外部服務會被擋掉,只要明確給定proxy代理資訊即可。
2.突破proxy後只剩單純引用Web Method來收取資料,但無論資料量多小的操作皆面臨逾時的狀況,即使設定client端timeout時間亦無法解決。
考量server端各類狀況都有可能造成影響,在無法實際操作server現實面下,piggy決定重新架設一樣功能的Web Service進行完整測試!

綜合以上,接下來提供兩篇專文描述如何架設附有權限之Web Service、 如何通過Web Service帳號驗證並取得資料。

SQL Server 2005 Express匯入EXCEL

相信不少Developer和piggy一樣,為了測試方便會在本機端安裝SQL Server Express,但Express 提供的功能較陽春,例如好用的匯入功能便沒有提供。以下setp by setp說明匯入Excel的步驟:

SETP 1:啟用OPENROWSET和OPENDATASOURCE支援
﹡開啟介面區組態
    開始→程式集→Microsoft SQL Server 2005→組態工具→SQL Server
    介面區組態

﹡開啟功能的介面區組態
    點選『功能的介面區組態』

﹡啟用功能並套用
    勾選『OPENROWSET和OPENDATASOURCE支援』
       

SETP 2:變更Ad Hoc Distributed Queries組態(開啟)
exec sp_configure 'show advanced options',1 reconfigure exec sp_configure 'Ad Hoc Distributed Queries',1 reconfigure
組態變更成功之訊息如下
組態選項 'show advanced options' 從 0 變更為 1。請執行 RECONFIGURE 陳述式來安裝。
組態選項 'Ad Hoc Distributed Queries' 從 0 變更為 1。請執行 RECONFIGURE 陳述式來安裝。

缺漏本步驟會出現下列錯誤訊息
訊息 15281,層級 16,狀態 1,行 1 SQL Server 已封鎖元件 'Ad Hoc Distributed Queries' 的 STATEMENT 'OpenRowset/OpenDatasource' 之存取,因為此元件已經由此伺服器的安全性組態關閉。系統管理員可以使用 sp_configure 來啟用 'Ad Hoc Distributed Queries' 的使用。如需有關啟用 'Ad Hoc Distributed Queries' 的詳細資訊,請參閱《SQL Server 線上叢書》中的<介面區組態>(Surface Area Configuration)。


SETP 3:使用指令匯入Excel SELECT * INTO pumpstation FROM OPENROWSET ('Microsoft.Jet.OLEDB.4.0', 'Excel 8.0;Database=D:\Dot NET\pumpstation.xls', [BASE_FCT$]) [指令說明]
pumpstatio是匯入後要新建在DB中的資料表名稱
BASE_FCT是工作表名稱,一般是Sheet1
Database的路徑請自行修改為Excel存放路徑
SELECT *亦可換成SELECT 特定欄位
成功匯入之訊息如下
(102 個資料列受到影響)


SETP4:變更Ad Hoc Distributed Queries組態(關閉) exec sp_configure 'Ad Hoc Distributed Queries',0 reconfigure exec sp_configure 'show advanced options',0 reconfigure
組態變更成功之訊息如下
組態選項 'Ad Hoc Distributed Queries' 從 1 變更為 0。請執行 RECONFIGURE 陳述式來安裝。
組態選項 'show advanced options' 從 1 變更為 0。請執行 RECONFIGURE 陳述式來安裝。

DB成功新增一名為pumpstation的資料表