哈!每次學習新的東西,不免俗的都會先來支最簡單的hello world!
學習wcf也是,本以為應該是跟web services一樣簡單,但其實不然
wcf有太多需要學習的地方,不過至少第一支起來後,後續的部份應該
就可以比較順利的學習上來囉!,以下的範例是小弟自己在測試過後
Post自己的學習經驗上來,當然不一定都是最正確,只是想要給自己
一個memo,如果有高手看到此篇拙文的話,煩請不吝指教!
有關於wcf的說明,這個網站不錯,推薦給大家看看
http://sites.google.com/site/stevenattw/dot-net/wcf
另外有一個地方要注意的事,當佈署在iis 上後,要執行之前,記得先做如下的動作!
//--------------------------------------------------------------------------------
以下的來源是參考下列網頁!
http://social.msdn.microsoft.com/Forums/zh-TW/1511/thread/673bb341-5f5a-4fa0-9dfd-b289278058ae
把下列程式碼存成 clientaccesspolicy.xml
<?xml version="1.0" encoding="utf-8"?>
<access-policy>
<cross-domain-access>
<policy>
<allow-from http-request-headers="SOAPAction">
<domain uri="*"/>
</allow-from>
<grant-to>
<resource path="/" include-subpaths="true"/>
</grant-to>
</policy>
</cross-domain-access>u84
</access-policy>
然後放到C:\inetpub\wwwroot下 (這邊是您server上的IIS目錄下).
//----------------------------------------------------------------------------------
以免當其他應用程式要呼叫時,發生下列錯誤訊息
錯誤內容為嘗試向 URI http://localhost:1505/IService.svc 進行要求時發生錯誤。這可能是因為嘗試以跨網域方式存取服務,而沒有適當的跨網域原則所造成,或是由不適用於 SOAP 服務的原則所造成。您可能需要聯絡服務的擁有者,以發佈跨網域原則檔案,並確定它允許傳送 SOAP 相關的 HTTP 標頭。這項錯誤也可能是在 Web 服務 Proxy 中使用內部型別而沒有使用 InternalsVisibleToAttribute 屬性所造成。如需詳細資訊,請查看內部例外狀況。
本範例是採用vs2010 rc版+win7,想說先把這個學習過程記錄下來
下一次就是用silverlight3來呼叫看看!
首先我習慣會先開一個空白的方案,名稱自訂,至於為什麼要開空白的方案,而不是專案呢?
因為一個方案可以同時放多個專案!所以這樣以後比較方便一起維護,而不用開多個vs2010程式,多佔記憶體
當然這是說給新手看的,高手就當我沒說過這段話囉!哈
接下來建立一個新的專案,方式如下,在方案的標題上按滑鼠右鍵,選擇建一個新的專案!
在以下的畫面中,你可以自己選擇是要wcf service library或wcf Services Application,這二個有什麼不同呢!這裡的網站有說明
所以看來建議還是選wcf Services Application
建立完後,如下圖,請將紅框的部份自行刪除
在自己建立的wcf專案名稱上按滑鼠右鍵,我們另外自己加一個 wcf服務
選擇wcf services
按下add之後,會自動產生二個檔案exam.svc,iexam.cs,這二個是成對的
下圖為剛產生的iexam.cs的程式內容
下圖為剛產生的exam.svc的程式內容
看來都是空空如也,接下來..
我在 exam.svc將dowork()方法刪掉,加入一個新的方法,程式碼如下
public string Hello(string name)
{
return string.Format("Hello!,{0}", name);
}
在iexam.cs將dowork()這個方法刪掉,改成可以傳入字串,並回傳hello!xxx,xxx為使用者傳入的字串的新方法,程式碼如下!
原本的code
[OperationContract]
void DoWork();
改成
[OperationContract]
string Hello(string name);
好了,就這樣,很簡單吧!,先建置看看,沒問題的話,來執行看看囉!
執行exam.svc檔
噹~噹!成功囉!
好,接下來我要把他發佈到iis7上面
開啟iis7在預設的站台下,新增一個應用程式,記得選pooling是選asp.net v4.0哦,而實體路徑可以先建一個空的資料夾即可
接下來我回到專案上來做發佈
這裡我發行的方式選 file system,我先假設我都是先發行到本機後,再自行copy到正式的server上
然後點選target location 右選的按鈕
接下來回到iis上測試看看,選擇自己建立的應用程式目錄中的exam.svc
如果你的ie中出現如下圖,就是佈署成功囉!
好了,下一次來做 silverlight3呼叫這個wcf囉!