SilverLight上WCFサービスの設定

 SilverLightに向け、サーバー側で発生する例外をクライアントへ通知するため、下記のURLのように、実装する必要があります。

http://msdn.microsoft.com/ja-jp/library/dd470096(en-us,VS.96).aspx

※注意点

■behaviorExtensionsに宣言したビヘイビアの「Type」要素に型名とアセンブリ名の間に必ずスペースを入れてください。入れないと、認識されません。

誤る例:

<behaviorExtensions>
       <add name="mySilverlightFaultsBehavior" type="WCFServices.SilverlightFaultBehavior,WCFServices,Version=1.0.0.0,Culture=neutral,PublicKeyToken=null" />
</behaviorExtensions>

正しい例:(スペースに注目してください。)

<behaviorExtensions>
       <add name="mySilverlightFaultsBehavior" type="WCFServices.SilverlightFaultBehavior, WCFServices, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
</behaviorExtensions>

参考情報

http://connect.microsoft.com/wcf/feedback/details/216431/wcf-fails-to-find-custom-behaviorextensionelement-if-type-attribute-doesnt-match-exactly

■FaultException<T>を利用して、例外をスローする場合、Tのクラス内にException型のプロパティを定義できません、定義したら、SilverLightクライアント側、FaultExceptionの例外を認識できなくなります。

http://msdn.microsoft.com/ja-jp/library/ms733721.aspx

カスタマイズ例外クラスの利用

 System.ServiceModel.FaultException<ErrorInfo>のようなサービス側のカスタマイズした例外クラスは、Silverlight側のクライアントが分かるため、Web.Configファイルに下記にようにWCFを設定する必要があります。

<system.serviceModel>
   <extensions>
     <behaviorExtensions>
       <!-- ポイント -->
       <add name="mySilverlightFaultsBehavior" type="SilverlightClassLibrary.WCF.SilverlightFaultBehavior, SilverlightClassLibrary, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
     </behaviorExtensions>
   </extensions>

   <bindings>
     <customBinding>
       <binding name="BusinessApplication1.Web.Services.Service1.customBinding1">
         <binaryMessageEncoding />
         <httpTransport transferMode="Streamed" />
       </binding>
     </customBinding>
   </bindings>
   
   <services>
     <service name="BusinessApplication1.Web.Services.Service1">
       <endpoint address="" binding="customBinding" bindingConfiguration="BusinessApplication1.Web.Services.Service1.customBinding1"
        contract="BusinessApplication1.Web.Services.Service1" behaviorConfiguration="SilverlightFaultBehavior" />
       <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
     </service>
   </services>
   
   <behaviors>
     <endpointBehaviors>
       <!-- ポイント -->
       <behavior name="SilverlightFaultBehavior">
         <mySilverlightFaultsBehavior />
       </behavior>
   </endpointBehaviors>

   <serviceBehaviors>
       <behavior name="">
         <serviceMetadata httpGetEnabled="true"/>
         <serviceDebug includeExceptionDetailInFaults="true" />
       </behavior>
     </serviceBehaviors>
   </behaviors>
   <serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true" />
</system.serviceModel>


超多機能のアクセス解析が永久無料!

コメント:



(画像の文字列を入力して下さい)

トップ   編集 凍結 差分 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2019/12/02 (月) 12:47:27 (1628d)

G|Cg|C@Amazon Yahoo yV

z[y[W yVoC[UNLIMITȂ1~] COiq COsیI