如何阅读消费应用程序中的FaultException细节?

时间:2012-12-14 15:23:11

标签: wcf webmethod asp.net-4.5

在我的WCF WebMethod中,我有以下代码提供了一些参数验证。它工作正常并抛出FaultException:

Public Function BeforeCall(operationName As String, inputs() As Object) As Object Implements IParameterInspector.BeforeCall
    Dim u As MyAppUser = CType(inputs(0), MyAppUser)
    If u.FirstName Is Nothing Then
        Throw New FaultException(Of String)("First Name is Nothing", "First name must be a string value, and not empty.")
    End If
    Return u
End Function

在消费应用程序中,我然后以触发错误的方式调用该方法(检查它是否有效)。我抓住错误提供反馈,如下:

Dim u As New ServiceReference1.MyAppUser
u.FirstName = Nothing
u.Surname = "SomeSurname"
Dim i As New ServiceReference1.Service1Client
Dim u2 As New ServiceReference1.MyAppUser
Try
    u2 = i.GetDataUsingDataContract(u)
Catch fe As FaultException
    Trace.Warn("FaultException Caught")
    Trace.Warn(fe.Message)
    Exit Sub
Catch ex As Exception
    Throw
End Try

然而,在跟踪输出中,我只看到:

  

出现FaultException

     

名字必须是字符串值,而不是空的。

有人可以告诉我如何读取FaultException详细信息以及抛出FaultException时提供的原因吗?

提前致谢。

1 个答案:

答案 0 :(得分:2)

要获取异常详细信息,您需要创建自定义fault contract,其中包含FaultException的详细信息。此外,您在抛出异常时会包含FaultReason。有关详细信息,请参阅以下文章。