WCF服務發布和調用IIS服務


  最近就要面試了,就把前一段時間學習過的wcf服務又拿出來復習了一邊。本來還以為很Easy的東西,誰知道等到真正要做的時候才知道原來有這么多知識要學習!

  先來說,把wcf基本服務完成的過程,我是在園子里看着蔣金楠老師的博客一點點做起來的。因為之前做過一次的原因,所以說這次做的時候也沒有太用心,隨隨便便的把代碼一抄就萬事大吉了。可是把代碼寫完之后,發現調試不成系統提示如下:

 

當時,也沒有想到是程序哪里出問題了,總以為程序照抄的就應該沒有問題,可是后來實在是找不到出錯的原因,然后上網百度之后才發現,

原來在服務契約定義的時候沒有加上這句話

[ServiceContract(Name = "CalculatorService", Namespace = "http://www.insigmaedu.com/")]

 這一點有做一點更正:這一點確實要加【servicecontract】不過不是必須要加(name 和namespace)。這一點謝謝

str.chan      

你的第一個錯誤只是 ICalculator沒有聲明ServiceContract屬性頭,而不是有沒有指明Name的情況,事實上,指明name只會讓你的抽象層跟實現層 變成藕合狀態了,不值得推薦,試想,兩個項目要針對ICalculator有2個不同的實現,那么你的name不是要改成2個不同的實現類?

 

 

 

 

 

當時只是一味的抄,也沒有注意到它有什么作用,后來轉到定義,看了一下

        // 摘要:
        //     獲取或設置 Web 服務描述語言 (WSDL) 中的 <portType> 元素的名稱。
        //
        // 返回結果:
        //     默認值為應用了 System.ServiceModel.ServiceContractAttribute 的類或接口的名稱。
        //

這些其實大家不用管,只要記得把name賦值給實現接口的類就行了,后邊的命名空間因該是不使用也沒關系(如果你的程序僅僅使用於調試)具體的我也沒有深入研究!!

接下來,就是關於IIS的發布了,這可是折麽死我了!!原來老師講的時候沒有好好聽講,現在發愁了。后來還是一點點的試出來的,首先我在建了一個文件夾,里面有一個BIN文件夾,svc文件,web.config三個文件!其中bin文件夾中要使用服務契約的的DLL(接口),和服務契約實現的DLL(接口的實現),svc文件中只有一句話:

<%@ ServiceHost Language="C#" Debug="true" Service="Services.CalculatorService" %>

這句話中只有service=“”這句話有用。service.calculatorservice是服務契約實現的命名空間.實現類!

接下來就是關於web.config的處理了!對於初學者,使用VS中配套的工具編寫是非常方便的。首先打開VS->工具—>WCF服務配置編輯器,點擊新建配置文件,服務,新建服務

 

 

 

 

瀏覽有服務實現的DLL選中,然后下一步,讓后一直下一步就行了。不過有一點要注意,就是在填寫終結點地址的時候把輸入框清空就行了!

接下來,就是配置服務了,在高級中點擊服務行為 點擊添加選擇

 

 

 

點擊servicemetadata,作如下設置

 

 

最后把終結點設置如下

 

 

把服務添加上點擊服務

 

 

最后就是保存就行了!最后最重要的就是,因為系統默認的文件名是app.config。但是在這里一定要改名為web.config,因為我們是要用IIS發布的,而不是應用程序了。這一點很重要,剛開始就是因為這一點,讓我耽誤了不少時間。最后就是用IIs發布了。

打開IIs之后,將文件夾設為默認網站,點擊svc文件瀏覽,就得到已下結果!

 

把這個超鏈接“?”之前的都復制下來!然后就是客戶端的調用了

在客戶端的“引用中左鍵添加服務引用如下圖

 

 

然后,點擊確定就行了!!

這時候,在debug中運行客戶端應用程序,是不是就可以運行了。這樣根本就不用運行服務端,不過其實也是運行了的,只要你不關機服務器就運行着!!神奇吧!!

哈哈,寫了半天,終於寫完了。因為本人是新人,其中有一些地方寫的不對,或者有缺陷,都請園子里的朋友們多多指正!接下來把源碼附上!

接下來是發布iis的文件夾

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM