WCF根据RequestFormat返回不同的错误

时间:2013-09-19 21:40:05

标签: wcf faultexception

我有一个WCF方法:

[WebInvoke(Method = "GET",
RequestFormat = WebMessageFormat.Json,
ResponseFormat = WebMessageFormat.Json,
UriTemplate = "exception")]
public void GenerateException()

我想基于客户端(SOAP vs JSON)返回不同的错误,因为如果不这样做,它们似乎没有对消息的可见性。

所以我检查内容类型并相应地选择我的类型

String ct = WebOperationContext.Current.IncomingRequest.ContentType;
FaultException fe = new FaultException(errorMessage, new FaultCode(errorCode));
WebFaultException<ErrorData> errorDataWebFault = new WebFaultException<ErrorData>   (errorData, System.Net.HttpStatusCode.InternalServerError);
if (ct.Contains("text/xml"))
            throw fe;
else//Can throw any of the WebFaultExceptions here
            throw errorDataWebFault;

如果我不检查,SOAP使用者无法看到WebFaultExceptions的消息,并且JSON使用者无法看到FaultException的消息。

有更好的方法吗?感觉应该有“内置”的东西。

0 个答案:

没有答案