Тема: WebException, Як отримати повідомлення помилки від SAOP сервера
Якщо клієнт звертається до сервера, в якого вже завершилася сесія (а клієнт звернувся з даними що не відносяться до поточної сесії) сервер має повернути помилку, код помилки.
Потрібно повернути код помилки "-3"
(-3 це код який я придумав для помилки SESSION_HAS_BEEN_EXPIRED)
throw new SoapException("SESSION_HAS_BEEN_EXPIRED",
new XmlQualifiedName("SESSION_HAS_BEEN_EXPIRED | Code: -3"));
Клієнт має отримати цю помилку
try
{
using (WebResponse Serviceres = request.GetResponse())
{
using (StreamReader rd = new StreamReader(Serviceres.GetResponseStream()))
{
XmlSerializer serializer =
new XmlSerializer(typeof(ServiceResult));
//reading stream
var ServiceResult = rd.ReadToEnd();
//load xml
XmlDocument doc = new XmlDocument();
doc.LoadXml(ServiceResult);
//writting stream result
return doc.GetElementsByTagName("soap:Body")[0].
ChildNodes[0].
ChildNodes[0].
InnerText;
}
}
}
catch (WebException ex)
{
Console.WriteLine(" -->>> Error: " + ex.Message);
using (var stream = ex.Response.GetResponseStream())
using (var reader = new StreamReader(stream))
{
Console.WriteLine(reader.ReadToEnd());
}
return "-3";
}
Проблема в тому що повідомлення помилки приходить "500 Internal Server Error", хоча в потоці Response є і моя помилка
Як правильно створити виняток (Throw Exception) і отримати його ? Зараз єдиний вихід це читати потік Response, а потім його парсити. Можна зробити так щоб повідомлення відправлялося зразу "-3" ?