厳密に型指定された FaultExceptions を WCF サービスから Silverlight クライアントに渡そうとしていますが、得られるのは一般的な "リモート サーバーがエラーを返しました: NotFound" だけです。同じコードを使用して一般的な FaultExceptions をスローしても問題なく動作します。
したがって、そうすると、Silverlight コールバックThrow New FaultException()
のパラメーターでそれを取得できますが、見つからないというエラーが発生します。e.Error
Throw New FaultException(Of clsServiceFault)(clsServiceFaultInstance)
clsServiceFault
次のようにデータ コントラクトとして既に宣言されています。
<DataContract()> _
Public Enum ServiceFaultTypes
LoginFailed
SessionExpired
End Enum
<DataContract()> _
Public Class clsServiceFault
Public Sub New()
End Sub
Public Sub New(iType As ServiceFaultTypes, iMessage As String)
Type = iType
Message = iMessage
End Sub
<DataMember()> _
Public Property Type As ServiceFaultTypes
<DataMember()> _
Public Property Message As String
End Class
フォールトがスローされる WCF メソッドはFaultContract
属性で装飾されており、HTTP 応答ステータス コードも 200 に変更しています。
<OperationContract()> _
<FaultContract(GetType(clsServiceFault))> _
Public Function GetCustomersData(...)
...
System.ServiceModel.Web.WebOperationContext.Current.OutgoingResponse.StatusCode = Net.HttpStatusCode.OK
Throw New FaultException() 'Works
Throw New FaultException(Of clsServiceFault)(new clsServiceFault(..)) 'Does not work
...
End Function
ここで何が欠けていますか?