Краткая версия: Есть ли какой-нибудь способ возврата сведений об ошибке клиенту, когда исключение вызывается в службе WCF с поддержкой AJAX (кроме того, что вы просто открываете ворота и отправка всех деталей исключения)?
Длинная версия:
У меня есть относительно простая служба WCF с поддержкой AJAX, которую я вызываю от клиента, используя прокси-сервер службы по умолчанию. Ниже приведены фрагменты кода, но я не думаю, что в коде есть что-то неправильное.
Моя проблема заключается в том, что если я вызываю исключение в службе, объект ошибки, возвращаемый клиенту, всегда является общим:
{
"ExceptionDetail":null,
"ExceptionType":null,
"Message":"The server was unable to process the request..."
"StackTrace":null
}
В идеале я хотел бы отображать разные сообщения об ошибках на клиенте в зависимости от того, что пошло не так.
Один из вариантов - разрешить исключения в ошибках WCF, которые предоставили бы мне полную трассировку стека и все, но я ценю проблемы безопасности с этим, и на самом деле гораздо больше информации, чем мне нужно. Я мог бы справиться с тем, что смог отправить строку, описывающую проблему, или что-то в этом роде, но я не вижу способа сделать это.
Мой код обслуживания:
[ServiceContract(Namespace = "MyNamespace")]
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
public class MyService
{
[OperationContract]
public void DoStuff(string param1, string etc)
{
//Do some stuff that maybe causes an exception
}
}
На клиенте:
MyNamespace.MyService.DoStuff(
param1,
etc,
function() { alert("success"); },
HandleError);
где "HandleError" - это всего лишь общий метод обработки ошибок, который отображает подробности об ошибке.