公告版位
哈囉,丫德我會常常更新一些工作上的心情記事及資訊科技新知與大家分享...

哈!每次學習新的東西,不免俗的都會先來支最簡單的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囉!

 

 

 

 

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


留言列表 (1)

發表留言
  • 風兒
  • 你寫的WCF 部署我最看得懂, 謝謝你的分享
  • 謝謝你哦

    丫德 於 2013/10/24 17:47 回覆

【 X 關閉 】

【PIXNET 痞客邦】國外旅遊調查
您是我們挑選到的讀者!

填完問卷將有機會獲得心動好禮哦(注意:關閉此視窗將不再出現)

立即填寫取消