2010-04-22

WCF-FaultException

這陣子在準備WCF的MCTS考試時,看了微軟發行的
[70-503 Microsoft .NET Framework 3.5 – Windows Communication Foundation]
這本書,說實在話,我看到後面第八章之後就有點看不下去
因為越看越模糊,完全不知道書中到底是在講些什麼??

尤其在這本書中提到FaultException的功能
並在書中寫下這樣的範例

   1:  [ServiceContract()]
   2:  public interface ICalculatorService
   3:  {
   4:  [OperationContract()]
   5:  [FaultContract(typeof(string))]
   6:  double Divide(double numerator, double denominator);
   7:  }
   8:  public class CalculatorService : ICalculatorService
   9:  {
  10:  public double Divide(double numerator, double denominator)
  11:  {
  12:  if (denominator == 0.0d)
  13:  {
  14:  string faultDetail = "You cannot divide by zero";
  15:  throw new FaultException<string>(faultDetail);
  16:  }
  17:  return numerator / denominator;
  18:  }
  19:  }

原本以為照這樣書中的練習,應該就可以看到結果,
結果沒想到程式出現了意外的錯誤狀況 >”<

image 

原因是甚麼?請教Google大神之後,我還是沒有找到解答,
(一方面可能是自己找的方向不對,所以就放棄)

事情就這樣結束了嗎? 不~~~這件事情還停在我腦海中,
反正我想總有一天應該會找到解答!!

之後我放棄微軟的Training kit轉而看
Professional WCF Programming - 作者:Scott Klein
書中反而說明的比較詳細,雖然對我來說還是有很多看不大懂的部分
其中又遇到FaultException說明

書中寫的範例跟Training Kit有點不大一樣,
是在FaultContract部分,多設定了ProtectionLevel

   1:      [OperationContract]
   2:      [FaultContract(typeof(MyDefFault),ProtectionLevel=ProtectionLevel.EncryptAndSign)]
   3:      string GetData(int value);

程式就可以Work了,先簡單寫到這,
等我看得比較熟悉清楚後,再來補充這部分。

沒有留言:

張貼留言