Exceptions in Web Service

VoidPointer

New member
Exceptions in Web Service

שלום לכולם . יש לי שאלה כזאת : כל Exception שעולה מתוך Web Service "נעטף" ב SoapException , כך שה Client מקבל בחזרה SoapException בלבד . הבעיה שלי היא כזאת. בתוך ה Web Service אני מעלה כל מיני Exceptions - מכל מיני סוגים וזה כמובן בנוסף ל Exceptions שיכולים לקרות בצורה "טבעית" :) , וחשבתי שב Client אני אוכל לדעת מה ה Exception המקורי על ידי SoapException.InnerException . ואז גיליתי דבר מאוד עצוב .. מסתבר שהSoapException שמגיע ל Client לא מכיל שום innerException . בעצם הדבר היחיד השימושי שהוא כן מכיל זהו ה Message , וה Message פשוט מכיל את כל ה stack של ה Exceptions . על פי מה שכתוב ב MSDN , ה Framework לפני ההעברה של ה SoapException אל ה Client עושה Serialize על כל ה stack ודוחף אותו ל MESSAGE . אולי מישהו נתקל בבעיה הזאת ומצא לה פתרון ? אני פשוט רוצה לדעת מה היה ה Exception המקורי,ומה היה ה MESSAGE שלו . תודה
 

sharkyM

New member
אתה יכול לעקוף את הבעייה

ע"י תפיסת כל השגיאות האפליקטיביות ב-ws , והחזרת קוד מתאים ל-client.
 

VoidPointer

New member
תודה , זו באמת דרך אחת

לפתור את הבעיה - כבר חשבתי עליה , אבל אז ה client חייב להכיר את כל קודי השגיאה . וחוץ מזה , אני מחפש פתרון לבעיה עצמה, כי זה באמת קטע די מעצבן ( לפחות אותי ). בכל אופן מצאתי דרך/עיקרון לפתור את זה , או יותר נכון לעקוף את הבעיה . ל SoapException יש property בשם Detail שהוא XmlNode . אז מה שפשוט אפשר לעשות , זה ליצור מתחתיו nodes עם המידע שאני רוצה להעביר ל client על השגיאה שאירעה , ואז ב client לקרוא את המידע הזה , ולעשות איתו מה שבא לי - לרשום ללוג/להציג למשתמש וכו' ... הדרך היותר אלגנטית לעשות את זה , זה ליצור איזו שהיא מעטפת ל SoapException ב WS וב client . למתעניינים מצורף לינק שבו יש את כל ההסבר .. הדוגמאות שם ב VB.NET . אני שכתבתי ב C# . הפתרון הזה עדיין לא מספק אותי , אבל זה כנראה מה שיש :( אז אני הולך על זה.
 
למעלה