哈!每次學習新的東西,不免俗的都會先來支最簡單的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,這二個有什麼不同呢!這裡的網站有說明

http://www.itscodingtime.com/itscodingtime/post/The-difference-between-Visual-Studios-WCF-Service-Application-and-WCF-Service-Library-project-templates.aspx

所以看來建議還是選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囉!

 

 

 

 

arrow
arrow
    全站熱搜

    丫德 發表在 痞客邦 留言(1) 人氣()