Spring.Net封閉業務類爲WebService注意點和問題

  最近遇到的一個項目中用到了標題所說的方法,用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字符串。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章