SilverLight?
SilverLight?
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>
参考情報
■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>
コメント: