1. 程式人生 > >.NET C#呼叫sap的webservices獲取資料,對於sap時間型別的處理

.NET C#呼叫sap的webservices獲取資料,對於sap時間型別的處理

1.問題

呼叫sap的webservices,由於程式環境無法直接在專案中引用地址。故採用,在伺服器拿到wsdl檔案,後生成c#本地的形式。

問題一:如何生成代理類

問題二:生成代理類,編寫程式。在正式環境使用時,卻發現無法找到地址,無法使用

問題三:sap時間型別生成代理類後自動轉化為c#的datetime型別,實際使用時出錯(因為sap時間型別不完全對等於c#datetime)

問題四:服務在本機和測試機可以部署  在正式伺服器無法部署

 

2.解決步驟

1.訪問所提供地址,得到xml檔案,改字尾為wsdl檔案。(注:sap形式的webservices,地址後不用加“?wsdl”)

   在vs命令列裡輸入: wsdl  /l:cs /n:*** /o:***  wsdlFilePath  回車即可得到cs檔案(只需記住wsdl l,n,o即可)

   /l:  全稱為language,為所要生成的語言,這裡選擇“cs”;

  /n:  全稱為NameSpace,為所要生成代理類的名稱空間;

  /o:  全稱為OutPut,為所要輸出代理類的路徑;

,  

 

2.無法找到地址,經查。

  在輸入地址時使用的為類似 http://ip:port/Details,但在生成代理類後文件的地址資訊為http://域名:port.Details

  或者地址直接為http://域名:port.Details  應用程式以後再部署到伺服器上時,可能該伺服器無法訪問到該域名。

解決:C:\Windows\System32\drivers\etc下的host檔案,加入本機域名對映資訊。如下圖所示

3.生成的代理類下,物件有以下屬性     private System.DateTime zJSJField;  該欄位其實只有日期沒有時間,不完全對等於c#的DatetTime,在使用時產生錯誤。

解決:手動修改該型別為字串型別。(應該有三處需要修改(成員變數,getset訪問器,欄位remarks))即可成功

4.服務使用topshelf和quartz,無法在伺服器部署,報錯資訊為沒有許可權。

 解決:需要企業版的防毒軟體對服務的exe檔案授權信任,或者暫時關閉掉安全軟體,即可正確安裝。