Я пытаюсь получить исключение WebFaultException в виде json и xml в зависимости от того, что запрашивает клиент, как описано в
http://blogs.msdn.com/b/endpoint/archive/2010/01/21/error-handling-in-wcf-webhttp-services-with-webfaultexception.aspx
Мой сервисный интерфейс выглядит так
[OperationContract]
[WebInvoke(Method = "POST", UriTemplate = "session_record?id={id}&command={command}")]
void SessionRecord(Guid id, String command);
Исключение
throw new WebFaultException<string>("Session not started", HttpStatusCode.Conflict);
Настройка службы Web.config
<system.serviceModel>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true" />
<behaviors>
<serviceBehaviors>
<behavior>
<serviceMetadata httpGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="true" />
</behavior>
</serviceBehaviors>
</behaviors>
<standardEndpoints>
<webHttpEndpoint>
<standardEndpoint name="" helpEnabled="true" faultExceptionEnabled="true" automaticFormatSelectionEnabled="true" />
</webHttpEndpoint>
</standardEndpoints>
Мой клиент звонит в сервис
$.ajax({
url: "Webservice/session_record?id={id}&command={command}".format({ id: $("#sessionGuid").val(), command : "start" }),
type: "POST",
dataType: "json",
contentType: "application/json; charset=utf-8",
success: function (data) {
alert("Started");
}
});
Я бы, кроме как получить JSON с сервера, но я получаю XML
И поскольку я прочитал это в ссылке, которую я отправил, я должен быть возможен
С WebFaultException подробности исключения, которое сериализуется в теле> ответного сообщения, всегда будут иметь формат (XML или JSON), который клиент> получил бы>, если бы не было ошибки. Если клиент ожидал XML, клиент получит детализацию исключения, сериализованную как XML. Аналогично, если клиент ожидал JSON,> клиент получит детализацию исключения, сериализованную как JSON.