1

厳密に型指定された FaultExceptions を WCF サービスから Silverlight クライアントに渡そうとしていますが、得られるのは一般的な "リモート サーバーがエラーを返しました: NotFound" だけです。同じコードを使用して一般的な FaultExceptions をスローしても問題なく動作します。

したがって、そうすると、Silverlight コールバックThrow New FaultException()のパラメーターでそれを取得できますが、見つからないというエラーが発生します。e.ErrorThrow 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

ここで何が欠けていますか?

4

1 に答える 1

0

SilverlightFaultBehaviorを使用してサービスを装飾していますか? そうでない場合、これはあなたの質問に答えるかもしれません。

于 2012-05-10T13:46:02.127 に答える