Как сериализовать пользовательское исключение для JSON в C # - PullRequest
3 голосов
/ 21 сентября 2010

У меня есть веб-сервис на c #, который я вызываю с помощью jquery ajax. Он работает нормально, за исключением случаев, когда пользовательское исключение выбрасывается внутри веб-метода. По какой-то причине responseText объектов XmlHttpResponse имеет только свойства базового класса Exception. Поэтому я получаю объект json со следующими свойствами: «ExceptionType», «Message» и «StackTrace»

Мое пользовательское исключение имеет свойство с именем «FieldErrors», которое не отображается в возвращении. Вот код для этого класса:

[Serializable]
[XmlRootAttribute(Namespace = "http://www.mydomain.com/", IsNullable = false)]
public class ValidationException : Exception
{
    public List<string> FieldErrors { get; set; }
    public ValidationException(string message = null, Exception innerException = null) : base(message: message, innerException: innerException) 
    {
        this.FieldErrors = new List<string>();
    }
}

Моя цель - получить свойство FieldErrors для отображения в ответе json.

1 Ответ

3 голосов
/ 24 сентября 2010

Не делай этого.Вы никогда не должны выставлять исключения из вашего сайта asp.net.

Даже если он окажется скрытым для пользователя, вы все равно отправляете его со всеми подробностями клиенту.

В этом случае вы действительно хотите контролировать то, что будет отправлено, поэтомуявная отправка списка ошибок полей без отправки json-версии всего экземпляра исключения - это то, что вы должны делать в любом случае.

...