עבור לתוכן

בעיה עם WebService ב-C#

Featured Replies

פורסם

שלום תוכניתנים יקרים!

יש לי בעיה בשימוש ב-WebService ב-C# (הסביבה היא Visual Studio 2005).

ה-WebService רץ על שרת IIS נפרד.

בפרויקט של ה-WebService על השרת, בקובץ Reference.cs שמכיל את כל ה-Referenceים ל-Classים שה-WebService מייחצן, כל ה-Data Members בכל ה-Classים מוגדרים כ-public.

לעומת זאת, בפרויקט על מחשב אחר שבו יש Web Reference ל-WebService הזה, בקובץ Reference.cs אותם Members הפכו משום מה ל-private ונוספו properties שהם public לאותם ה-members.

איך אפשר לבטל את השינוי, כך ש-Web Reference לא ייחצן לי את ה-Data Members באמצעות properties אלא ישאיר אותם כ-public ויתן לי גישה ישירה אליהם? האם ההגדרה הזאת היא בפרויקט שמכיל את ה-WebReference או בפרויקט של ה-WebService עצמו על השרת IIS?

תודה רבה, אסף.

פורסם

ה- studio מייצר לך את קובץ הממשק ל- WebService

Reference.cs כפי שאמרת

בהתאם ל- קלאסים וה- WebMethods שיש בכל קלאס ב- WebService

אם ה- WebService עושה שימוש פנימי באיזשהם DataMembers אז הוא לא יחשוף אותם ל- client

רק אם WebMethod ציבורי מחזיר DataMember או מקבל DataMember אז הוא ייחשף לך בצד ה- client

נדיר מאוד שצריך להתערב בקובץ ה- references.cs ולשנות אותו

פורסם
  • מחבר

אוקי תודה רבה,

איך בכל זאת אני יכול לחשוף את ה-Data Members בלי properties?

הגישה חייבת להיות ע"י WebMethod (במקרה שלנו properties) ?

החשיפה (יחצון) ע"י properties יוצרת עוד בעיה - ה-visual מוסיף לשמות השדות (DataMembers) את התוספת "Field" מה שיאלץ אותי לשנות בכל המערכת את ההתייחסות לאותם שדות..

פורסם

חפש בקובץ ה- references.cs

data members שלפני הצהרתם יש קידומת עם מילת המפתח internal ואז להסיר אותה

אבל אני מדגיש שוב : אם הגעת למצב שאתה צריך לעשות זאת , סימן שמשהו מאוד לא בסדר באיך שתכננת את הממשק שלך בין ה- client ל- webservices

client כאן אני מתכוון לא ל- client של צד הדפדפן אלא אפליקציית ה- asp.net שלך שקוראת ל- webservices

פורסם
  • מחבר

אין כאלו DataMembers, רק WebMethods..

אני צריך את אותם DataMembers כ-public כי אני משתמש ב-Reflection עבור אותם classים והפונקציות getField/s פועלות רק על שדות public.

אני לא יכול פשוט לשנות את ההגדרה private ל-public?

פורסם

יכול להיות שב- studio 2003 זה internal וב- studio 2005 הם שינו את זה ל- private

נסה

אבל תהיה מודע לזה שבכל פעם שתעשה שינויים ב- webservices תצטרך לשנות שוב את קובץ ה- references.cs כי ה- studio מחולל אותו כל פעם מחדש

ארכיון

דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.

דיונים חדשים