powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / WCF, Web Services, Remoting [игнор отключен] [закрыт для гостей] / ServiceException
32 сообщений из 32, показаны все 2 страниц
ServiceException
    #37295618
Testor1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем привет!

Как из c# получить код и текст исключения ServiceException

При попытке использовать SoapException поле Message всегда возвращает ServiceException, а не реальный текст ошибки

<?xml version='1.0' encoding='UTF-8'?><SOAP-ENV:Envelope xmlns:SOAP-ENV=" http://schemas.xmlsoap.org/soap/envelope/"><SOAP-ENV:Body><SOAP-ENV:Fault><faultcode>SOAP-ENV:Client</faultcode><faultstring>ServiceException</faultstring><detail><ServiceException xmlns=" http://bla/api"><faultcode xmlns="">ER000</faultcode><faultdetail xmlns="">Found 0 cases for method=apiProxyMethod; tn=bbb</faultdetail></ServiceException></detail></SOAP-ENV:Fault></SOAP-ENV:Body></SOAP-ENV:Envelope>
...
Рейтинг: 0 / 0
ServiceException
    #37295676
Фотография bured
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
<serviceDebug includeExceptionDetailInFaults="true" />

если хотите программно, то юзайте FaultException
...
Рейтинг: 0 / 0
ServiceException
    #37295741
Testor1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Не срабатывает FaultException. Возвращает - ServiceException

catch (FaultException e)
{
return "test"+e.Message;
}
catch (WebException e)
{
return e.Message;
}
catch (Exception e)
{
return e.Message;
}
...
Рейтинг: 0 / 0
ServiceException
    #37295762
Фотография bured
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Testor1,

а ты в сервисе FaultException выбрасываешь?

Или можно FaultContract реализовать, если хочешь свой тип ошибки. Полно примеров в сети. Вот например Exception Handling in WCF using Fault Contract
...
Рейтинг: 0 / 0
ServiceException
    #37295860
Testor1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
bured,

Я просто хочу получить текст и код ошибки из ServiceException.

Как это сделать?
Можешь помочь пример с кодом? FaultContract мне пока не нужен.
...
Рейтинг: 0 / 0
ServiceException
    #37295908
Testor1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Testor1,

Я пишу клиентскую часть
...
Рейтинг: 0 / 0
ServiceException
    #37295967
Фотография bured
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Testor1,

в вебметоде сервиса выбрасывайте FaultException с заполнением reason и message. Тогда на клиенте его можно будет отловить в блоке catch (FaultException e)
...
Рейтинг: 0 / 0
ServiceException
    #37296011
Testor1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
bured,

Я не могу редактировать WebService. Он написан на Java и у меня нет доступа к сервису.
Вижу, что сервис формирует сообщение об ошибке (пример в начале сообщения), но я не умею его перехватывать.
...
Рейтинг: 0 / 0
ServiceException
    #37296218
Lexxxxx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Testor1,

А [ServiceBehavior(IncludeExceptionDetailInFaults=true)] у Вас на сервисе имеется?
...
Рейтинг: 0 / 0
ServiceException
    #37296234
Testor1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Lexxxxx,

Нет.
...
Рейтинг: 0 / 0
ServiceException
    #37296275
Lexxxxx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Testor1,

Тогда похоже не получится получить ничего более информативного чем у Вас есть сейчас.
Вот цитатка из букваря:
"Если необходимо передать клиенту информацию об исключении, то можно воспользоваться свойством IncludeExceptionDetailInFaults поведения ServiceDebugBehavior."
http://msdn.microsoft.com/ru-ru/library/system.servicemodel.description.servicedebugbehavior.includeexceptiondetailinfaults.aspx
...
Рейтинг: 0 / 0
ServiceException
    #37296365
Фотография D129
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Testor1,

А в классе Exception InnerException смотрели?
...
Рейтинг: 0 / 0
ServiceException
    #37296399
Testor1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
D129,

Можно пример ?
...
Рейтинг: 0 / 0
ServiceException
    #37296408
Фотография D129
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Testor1Можно пример ?

Как-то так
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
catch (Exception ex)
{

   string error = ex.Message;

   if (ex.InnerException != null) // А оно может!
   {
       error += ex.InnerException.Message;
    }

   MessageBox.Show(error);

}

[SIZE=1]Ну там не учу вас пользоваться Stringbuilder ом....[/SIZE]
...
Рейтинг: 0 / 0
ServiceException
    #37296663
Testor1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
D129,

Результат - ServiceException
Чудо не произошло :(

catch (FaultException e)
{
return "test"+e.Message;
}

catch (Exception ex)
{

string error = ex.Message;

if (ex.InnerException != null) // А оно может!
{
error += ex.InnerException.Message;
}

return error;

}
...
Рейтинг: 0 / 0
ServiceException
    #37296736
Lexxxxx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Testor1,

Все же спрошу, какой из катчей перехватывает исключение?
...
Рейтинг: 0 / 0
ServiceException
    #37296747
Testor1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Lexxxxx,

Exception, а иначе текст ошибки бы начинался со слова "test"
...
Рейтинг: 0 / 0
ServiceException
    #37296763
Lexxxxx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Testor1,

А нельзя ли попросить владельца сервиса включить includeExceptionDetailInFaults?
...
Рейтинг: 0 / 0
ServiceException
    #37296878
Фотография D129
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Testor1Чудо не произошло :(

Ну значит сервис не цепляет эксепшен к ответу.

А то, что вы получаете - вообще клиент рожает (наверное).
...
Рейтинг: 0 / 0
ServiceException
    #37296994
Testor1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
D129,

WireShark-ом снимал трейс. Сервак отвечает.
...
Рейтинг: 0 / 0
ServiceException
    #37297048
Фотография D129
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Testor1,

Отвечать-то отвечает, а вот цепочку эксепшенов похоже не дает.

Еще есть диагностика самого WCF, в аппконфиге клиента можно включить.... посмотреть что там.
...
Рейтинг: 0 / 0
ServiceException
    #37297052
Testor1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
D129,

Сорри как ?
...
Рейтинг: 0 / 0
ServiceException
    #37297291
Фотография D129
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Testor1D129,

Сорри как ?

Но это не программно... хотя почти наверняка есть способ перехватить эту деятельность....

В студии - правый клик на апп.конфиг - Edit WCF configuration - откроется формочка с деревом - и одна из ветвей дерева будет Diagnositic. Там надо включить трейсинг - в трейсинг пишутся сообщения обо всех ошибках. Указать или запомнить имя файла - куда это будет писаться.

Запустить клиента, в его рабочей директории появится хмл файл - он имеет расширение привязанное специальному просмотрщику - тоже наверное из студии - и можно найти - ошибки помечаются красным цветом.
...
Рейтинг: 0 / 0
ServiceException
    #37297396
Testor1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
D129,

Зачем :)
Я трейсы снял на сетевом уровне. Там все видно.
...
Рейтинг: 0 / 0
ServiceException
    #37297464
Фотография bured
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Testor1,

если у вас нет доступа к сервису - это разговор ни о чём. Больше чем он вам присылает вы не получите.

В вашей xml <faultdetail xmlns="">Found 0 cases for method=apiProxyMethod; tn=bbb</faultdetail>. Возможно этого будет достаточно.
...
Рейтинг: 0 / 0
ServiceException
    #37297793
Testor1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
buredTestor1,

если у вас нет доступа к сервису - это разговор ни о чём. Больше чем он вам присылает вы не получите.

В вашей xml <faultdetail xmlns="">Found 0 cases for method=apiProxyMethod; tn=bbb</faultdetail>. Возможно этого будет достаточно.

Так я и хочу получить текст faultdetail, но не получается.
...
Рейтинг: 0 / 0
ServiceException
    #37297794
Testor1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
bured,

Сервис запущен на GlassFish. Может быть существует библиотека GF для .net?
...
Рейтинг: 0 / 0
ServiceException
    #37297806
Testor1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Testor1,

Что-то нашел, но мне все равно нужно решение
http://stackoverflow.com/questions/2771840/web-service-client-receiving-generic-faultexception-rather-than-faultexceptiont
...
Рейтинг: 0 / 0
ServiceException
    #37307785
Testor1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Testor1,

Вот сравнение FaultService WebSphere и WCF (дебаг).
По структуре они одинаковые. Почему WCF не видит catch (FaultException<ServiceException> ex) для WebSphere?



--- Web Sphere
<?xml version='1.0' encoding='UTF-8'?><SOAP-ENV:Envelope xmlns:SOAP-ENV=" http://schemas.xmlsoap.org/soap/envelope/"><SOAP-ENV:Body><SOAP-ENV:Fault><faultcode>SOAP-ENV:Client</faultcode><faultstring>ServiceException</faultstring><detail><ServiceException xmlns=" http://beeline.ru/napi"><faultcode xmlns="">ER000</faultcode><faultdetail xmlns="">Found 0 cases for method=NapiProxyCheckType; tn=88800030341</faultdetail></ServiceException></detail></SOAP-ENV:Fault></SOAP-ENV:Body></SOAP-ENV:Envelope>

--- WCF
<s:Envelope xmlns:s=" http://schemas.xmlsoap.org/soap/envelope/"><s:Body><s:Fault><faultcode>s:Client</faultcode><faultstring xml:lang="en-US">The creator of this fault did not specify a Reason.</faultstring><detail><PMSFaultException xmlns=" http://schemas.datacontract.org/2004/07/" xmlns:i=" http://www.w3.org/2001/XMLSchema-instance"><DefaultReason>ArgumentNullException_Owner</DefaultReason><FaultReason>ArgumentNullException</FaultReason><details>........ Owner .... .......... ........ ............</details><errorcode>-10</errorcode></PMSFaultException></detail></s:Fault></s:Body></s:Envelope>
...
Рейтинг: 0 / 0
ServiceException
    #37307833
Фотография bured
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Потому, что FaultContract с типом ServiceException на серверной стороне никто не определял.

MSDN

// Вы пытаетесь решить свою проблему наобум, без теории. Из-за этого так долго мучаетесь.
...
Рейтинг: 0 / 0
ServiceException
    #37308480
Testor1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
buredПотому, что FaultContract с типом ServiceException на серверной стороне никто не определял.

MSDN

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

Как он должен быть определен на Java (WebSphere) ?

Что касается примера - то я по нему и работаю. Не любая теория легко дается без практики.
...
Рейтинг: 0 / 0
ServiceException
    #37310926
Testor1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Testor1,

Разобрался. Моя ошибка была.

catch (SoapException ex)
{
string a;
string b;
XmlDocument X = new XmlDocument();
X.LoadXml(ex.Detail.InnerXml);
a = X.DocumentElement.GetElementsByTagName("faultcode").Item(0).InnerText;
b = X.DocumentElement.GetElementsByTagName("faultdetail").Item(0).InnerText;

return a;
}
...
Рейтинг: 0 / 0
32 сообщений из 32, показаны все 2 страниц
Форумы / WCF, Web Services, Remoting [игнор отключен] [закрыт для гостей] / ServiceException
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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