在我的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时提供的原因吗?
提前致谢。
答案 0 :(得分:2)
要获取异常详细信息,您需要创建自定义fault contract,其中包含FaultException的详细信息。此外,您在抛出异常时会包含FaultReason。有关详细信息,请参阅以下文章。