powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / WCF, Web Services, Remoting [игнор отключен] [закрыт для гостей] / Сериализация своего Exception в WCF
8 сообщений из 8, страница 1 из 1
Сериализация своего Exception в WCF
    #37082456
cha0ss
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте, пытаюсь клиентом отловить "мою" ошибку на сервере.

На сервере описываю OperationContract:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
    [ServiceContract]
    public interface IMyService
    {
        /// <summary>
        /// Запрос данных с сервера <br/>
        /// </summary>
        /// <param name="typeRequest">Тип запроса (не зависит от регистра)</param>
        /// <param name="textRequest">Текст запроса</param>
        /// <returns>Результат запроса</returns>
        [OperationContract]
        [FaultContract(typeof(MyErrorException))]
        string Get(string typeRequest, string textRequest);
    }

    [ServiceBehavior(InstanceContextMode = InstanceContextMode.Single, IncludeExceptionDetailInFaults = true)]
    public class InCityService : IInCityService
    {
        public string Get(string typeRequest, string textRequest){
           throw new FaultException<MyErrorException>(new MyErrorException(), "dsfdsfds");
        }
    }

определяю свой класс ошибки, помечаю его DataContract:
    [DataContract]
    public class MyErrorException : Exception
    {
    }

При получении метаданных пишет следующее:
...
Рейтинг: 0 / 0
Сериализация своего Exception в WCF
    #37082457
cha0ss
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Тип "MyErrorException" не может быть ISerializable
...
Рейтинг: 0 / 0
Сериализация своего Exception в WCF
    #37082470
Фотография bured
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
уберите наследование
Код: plaintext
: Exception
...
Рейтинг: 0 / 0
Сериализация своего Exception в WCF
    #37082543
cha0ss
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
bured,

Если убрать наследование от Exception, то на сервере я не смогу вызывать throw new Exception и catch отлавливать. Я так понимаю для внутренней логики мне надо оставить этот класс, наследованный от Exception, а для возможности передачи специфичной ошибки на клиент создать еще один класс, который будет содержать мой Exception.

Я правильно рассуждаю?
...
Рейтинг: 0 / 0
Сериализация своего Exception в WCF
    #37082581
Фотография bured
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пардон. Беру слова обратно.
Так должно быть.
Код: plaintext
: Exception, ISerializable
...
Рейтинг: 0 / 0
Сериализация своего Exception в WCF
    #37148148
renaton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cha0ss
Так:
Код: plaintext
: Exception, ISerializable
получилось?
...
Рейтинг: 0 / 0
Сериализация своего Exception в WCF
    #37218919
Фотография Roman S. Golubin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cha0ssbured,

Если убрать наследование от Exception, то на сервере я не смогу вызывать throw new Exception и catch отлавливать. Я так понимаю для внутренней логики мне надо оставить этот класс, наследованный от Exception, а для возможности передачи специфичной ошибки на клиент создать еще один класс, который будет содержать мой Exception.

Я правильно рассуждаю?

нет. На сервере надо вызывать

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
... // contracts

[DataContract]
public sealed class MyFaultContract
{
    [DataMember]
    private readonly string errorInfo;

    ...
}

... // service
    if (something)
    {
        throw new FaultException<MyFaultContract>(new MyFaultContract());
    }
...
Рейтинг: 0 / 0
Сериализация своего Exception в WCF
    #37218926
Фотография Roman S. Golubin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cha0ssЕсли убрать наследование от Exception, то на сервере я не смогу вызывать throw new Exception и catch отлавливать.

Для передачи клиенту используйте FaultDataContract, для обработки на сервере - Exception. Передавать Exception наружу не нужно.
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / WCF, Web Services, Remoting [игнор отключен] [закрыт для гостей] / Сериализация своего Exception в WCF
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]