WCF WebFaultException ExceptionDetail

时间:2013-10-02 08:32:15

标签: json vb.net wcf exception exception-handling

我正在创建一个以JSON格式返回数据的WCF服务。我正在试图弄清楚如何最好地处理异常,我正在尝试使用WebFaultException类在响应中返回异常详细消息,稍后可以将其输出给用户。

我正在尝试的这种方法的简单测试如下

WCF服务方法

    <WebInvoke(Method:="POST",
        ResponseFormat:=WebMessageFormat.Json)>
    <OperationContract()>
    Public Function Test() As Object
        Throw New WebFaultException(Of String)("Message Details", Net.HttpStatusCode.NotFound)
    End Function

根据我发现的搜索此问题的答案,您应该为服务提供一个行为配置,将includeExceptionDetailInFaults设置为true。

我的网站.Config

<service name="WebserviceExceptionTest.Service" behaviorConfiguration="behavior">
    <endpoint address="" behaviorConfiguration="WebserviceExceptionTest.ServiceAspNetAjaxBehavior"
        binding="webHttpBinding" contract="WebserviceExceptionTest.Service" />
</service>

  <serviceBehaviors>
    <behavior name="behavior">
      <serviceDebug includeExceptionDetailInFaults="True"/>
    </behavior>

不幸的是,这对我来说似乎不起作用,而且响应仍然不包含异常细节,JSON字符串如下所示:

{"ExceptionDetail":null,"ExceptionType":null,"Message":"Not Found","StackTrace":null}

有没有人知道我做错了什么,或者我只是完全走错了路?谢谢!

修改

我得到的响应总是“500内部服务器错误”即使我希望它找到400找不到。错误消息确实包含“无内容”。

1 个答案:

答案 0 :(得分:0)

将automaticFormatSelectionEnabled设置为false,将defaultOutgoingResponseFormat设置为Json(我相信它甚至会忽略ResponseFormat:= WebMessageFormat.Json)

<standardEndpoint name="" helpEnabled="true" automaticFormatSelectionEnabled="false" defaultOutgoingResponseFormat ="Json" />

http://msdn.microsoft.com/en-us/library/system.servicemodel.description.webhttpendpoint.automaticformatselectionenabled.aspx