Как заставить пользовательский обработчик ошибок WCF возвратить ответ JSON с неOK http код?

Полное противоположное, соглашение о присвоении имен ясно определяет интерфейс.

, Например, если Вы имеете:

public class Dog : IPet, IMammal
{
    ....

Только от чтения его, я могу безопасно предположить, что IPet и IMammal являются, вероятно, интерфейсами.

CLR.NET допускает наследование единого класса. Так, если у меня есть базовый класс.. Я могу только наследовать один класс от него. Позволяет изменяют интерфейс IPet на базовый класс.. наш пример теперь становится

public class Dog : Pet, IMammal
{
    ....

, я наследовался Любимому классу и реализую интерфейс IMammal.

, Если мы сделали это, что Вы предлагаете и удалили букву "I", у нас есть это:

public class Dog : Pet, Mammal
{
    ....

, Какой является классом, которому я наследовался? Который является интерфейсом, который я реализую? Это получает запутывающее право? (К вашему сведению.. Вы, как предполагается, помещаете базовый класс всегда сначала, таким образом, Вы могли оспорить ту точку зрения..., но если Вы требуете удалять букву I из добавления префикса имен интерфейса, я сомневаюсь, что Вы применяете ту практику также)

, Поскольку Вы видите, что соглашение о присвоении имен легко говорит мне много о моем объекте без меня имеющий необходимость заняться расследованиями далее. Я могу легко видеть то, что я наследовал по сравнению с тем, что я реализую.

35
задан 19 July 2009 в 01:19
поделиться

3 ответа

Как выглядит класс ErrorMessage?

Дон ' t используйте поле StatusMessage для машиночитаемых данных - см. http://tools.ietf.org/html/rfc2616#section-6.1.1 .

Также может быть нормально, что " теперь в теле http вместо фактических данных JSON отображается текст «Не удалось загрузить источник для: http: // localhost: 7000 / bla ..» - буквальная строка - это данные JSON, если Я правильно помню.

0
ответ дан 27 November 2019 в 07:13
поделиться

У меня была точно такая же проблема. Мне это пригодилось:

http://zamd.net/2008/07/08/error-handling-with-webhttpbinding-for-ajaxjson/

3
ответ дан 27 November 2019 в 07:13
поделиться

На самом деле, у меня это работает.

Вот мой класс ErrorMessage:

    [DataContract]
    public class ErrorMessage
    {
        public ErrorMessage(Exception error)
        {
            Message = error.Message;
            StackTrace = error.StackTrace;
            Exception = error.GetType().Name;
        }

        [DataMember(Name="stacktrace")]
        public string StackTrace { get; set; }
        [DataMember(Name = "message")]
        public string Message { get; set; }
        [DataMember(Name = "exception-name")]
        public string Exception { get; set; }
    }

В сочетании с последним фрагментом выше:

        fault = Message.CreateMessage(version, "", new ErrorMessage(error), new DataContractJsonSerializer(typeof(ErrorMessage)));
        var wbf = new WebBodyFormatMessageProperty(WebContentFormat.Json);
        fault.Properties.Add(WebBodyFormatMessageProperty.Name, wbf);

        var response = WebOperationContext.Current.OutgoingResponse;
        response.ContentType = "application/json";
        response.StatusCode = HttpStatusCode.InternalServerError; 

Это дает мне правильные ошибки как json. Спасибо. :)

27
ответ дан 27 November 2019 в 07:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: