WCF 初體驗--架設過程疑難排解
- 2010-04-01
- 24515
- 0
今天第一次寫 WCF 所以來記錄一下,之前參加就已經有初步的了解WCF是什麼東西了,一直也認為他不難,今天實作的時候也是還OK,可能是因為早就習慣了 MVC 的開發模式寫起 WCF 就有很多一樣的感覺,但是在程式都寫完後放上IIS才知道,真正的難題來了,接連遇到問題走一步卡一步感覺還真差勁。
學習新技術最快的方式就是看影片,好在MSDN影片很豐富「MSDN 教學短片 -WCF」,我覺得看完第一個影片就能寫出點什麼了。
我的需求很簡單,就是當成Web Service 來用,Code寫不久怎麼開始寫看上面的影片就知道了,我也不多說,先來說我一開始誤解的地方,因為我寫完後直接執行就很納悶就這樣一頁玩意要怎麼呼叫,他又沒有像 Web Service 一樣可以直接在網頁上呼叫,所以我卡了一下。
在了解到喔,測試要自己寫 Console 以後就想說那就放上 IIS 跑吧慘劇就來了,一瀏覽就發生
HTTP 錯誤 404.17 - Not Found
要求的內容似乎是指令碼,因此靜態檔案處理常式便不會對它進行處理。
發生 404.3 的錯誤和這解法一樣,都是因為不知名的安裝順序造成「.svc」只有 .NET 4.0 才能用的局面因此我們必須手動加上 .NET 2.0的相關設定。
點選「處理常式對應」
點選畫面右邊動作下的「新增 Managed 處理常式」
- 要求路徑:*.svc
- 類型:System.ServiceModel.Activation.HttpHandler, System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
- 名稱:svc-Integrated
以為設定好了再次去瀏覽卻又看到了錯誤畫面
此集合已經包含具有配置 http 的位址,此集合中,每一配置最多只能有一個位址。
會發生這錯誤是因為這網站的確是繫結了兩個網址
網路搜尋了一下解決方式有三種
- 就把繫結改成一個(這什麼爛解決方式.....
- 寫一段程式來處理這玩意兒(可以參考這裡
- 直接設定Web.Config(這是 demo 覺得比較正確的解法WCF的其中一個優點不就是什麼東西只需要改設定檔就可以改變了,所以我們就來設定 Web.config 吧
通常加入了 WCF 以後 Web.config 最下面都會被加上相關宣告,因此就拉到最下面吧找到<system.serviceModel>
在下一行貼上
<serviceHostingEnvironment> <baseAddressPrefixFilters> <add prefix="http://localhost/" /> </baseAddressPrefixFilters> </serviceHostingEnvironment>
其中的http://localhost就是你要使用WCF的網址,如果你還是不了解相關位置可以參考下圖
以上就是我在部屬WCF的時候遇到的問題,寫出來讓和我一樣的新手不會又跌跌撞撞的
回應討論