標籤:引用 arc http 業務 set logs 解決 項目 格式
最近遇到的一個項目中用到了標題所說的方法,用Spring.Net將業務類封閉成WebService供其它地方調用使用,感覺還是蠻新鮮的,於是在園子中搜了一篇園友寫的文章(這裡)自己也嘗試著搭了一個環境,最後是順利跑了起來,但是中間遇到了幾個問題,這裡記錄一下。
具體的搭建方法不再贅述,上面的文章寫的比較清楚了,主要問題:
1、設定檔引入方式
在設定檔web.config中引用spring.net的設定檔時,我並沒有像上面文章中一樣建了一個新的設定檔而是建了一個叫settings.xml的xml檔案,但是效果是一樣的,spring.net都能識別的,因為config檔案本身就是一個xml檔案。然後在web.confg檔案中的context節點中引入設定檔,依照上面文章中的寫法<resource uri="~/settings.xml"/>是沒問題的,可以成功啟動並完成封裝,但是用另外一種方式時<resource uri="aeesmbly://Spring.Net/Spring.Net/settings.xml"/>(一般來說我們在實際的項目中會用這種方式,因為我們都會對項目進行分層,不同的層關注並處理不同的業務,上面那種方法適用於引用當前項目集中的設定檔,要引用其它項目集中的設定檔時就要用這種方式),出了問題,會拋出InputStream為null的錯誤,其實就是沒有找到設定檔,原因是沒有把settings.xml檔案設定為“內嵌檔案”(在屬性中設定)。
2、調用遠程調用問題
啟動成功後點擊頁面上的方法名然後點擊調用按鈕能看到返回結果,但是在另一個項目裡用WebClient進行調用時卻出了問題,拋出“遠程伺服器關閉了一個現有串連”,然後發現只能用點擊調用按鈕的方式才能看到結果,換個瀏覽器把地址複製進去斷行符號也不能用。原因是沒有在設定檔web.config添加遠程調用協議,在system.web節點下添加如下代碼即可。
<webServices> <protocols> <add name="HttpPost"/> <add name="HttpGet"/> </protocols> </webServices>
3、傳回值問題
使用這種方式封裝的WebService有個問題目前我還未找到解決辦法,就是傳回值是xml類型的,不能通過在要求標頭資訊裡面設定類型的方式控制傳回值類型(如json格式),都是xml類型的string字串。
Spring.Net封閉業務類為WebService注意點和問題