powered by simpleCommunicator - 2.0.41     © 2025 Programmizd 02
Форумы / WCF, Web Services, Remoting [игнор отключен] [закрыт для гостей] / Обработака исключений в WCF
3 сообщений из 3, страница 1 из 1
Обработака исключений в WCF
    #37899214
spam19701
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Подскажите новичку следующее. Имеется служба:
Код: c#
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.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
using System;
using System.Runtime.Serialization;
using System.ServiceModel;

namespace EmailService
{
    [ServiceContract]
    public class EmailValidator
    {
        [DataContract]
        public class EmailValidatorFault
        {
            private string CustomError;
            public EmailValidatorFault(string error)
            {
                CustomError = error;
            }

            [DataMemberAttribute]
            public string Message
            {
                get { return this.CustomError; }
                set { this.CustomError = value; }
            }

            [DataMemberAttribute]
            public string Reason
            {
                get { return this.CustomError; }
                set { this.CustomError = value; }
            }

        }

        [OperationContract]
        [FaultContract(typeof(EmailValidatorFault))]
        public string Test()
        {
            try
            {
                int a = 0;
                int b = 1 / a; //Преднамеренное исключение
                return "Hello, World!";
            }
            catch (Exception e)
            {
                FaultException fe = new FaultException<EmailValidatorFault>(new EmailValidatorFault(e.Message));
                throw fe;
            }
        }
    }
}



И имеется её клиент:

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
using System;
using System.ServiceModel;

namespace ConsoleClient
{
    class Program
    {
        static void Main(string[] args)
        {
            EmailValidatorClient svc = new EmailValidatorClient();
            try
            {
                string Result = svc.Test();
                Console.WriteLine("Result = {0}", Result);
            }
            catch (FaultException<EmailValidatorClient> e)
            {
                Console.WriteLine(e.Message);
            }
            Console.Write("Input Enter to Exit ");
            Console.Read();
        }
    }
}



В итоге, на клиенте под отладкой получаю сообщение:

FaultException 1 не обработано:
Создатель этой ошибки не указал Reason.

Поясните, что это такое, и что я должен сделать. У FaultException есть свойство Reason, но оно ReadOnly, я не могу его выставить в службе. Или тут что-то другое имеется в виду?
...
Рейтинг: 0 / 0
Обработака исключений в WCF
    #37899303
AlexeiK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
spam19701,

Код: c#
1.
FaultException<TDetail>(TDetail, FaultReason, FaultCode)
...
Рейтинг: 0 / 0
Обработака исключений в WCF
    #37899430
spam19701
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AlexeiK,
Спасибо, вроде разобрался. Мне просто надо было внимательнее посмотреть в proxy - файл и написать в клиенте

Код: c#
1.
2.
3.
4.
catch (FaultException<EmailValidatorEmailValidatorFault> e)
   {
   Console.WriteLine(e.Detail.Message);
   }



вместо неверного

Код: c#
1.
2.
3.
4.
catch (FaultException<EmailValidatorClient> e)
   {
    Console.WriteLine(e.Message);
   }



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


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