משיב מוביל
העברת string שמכיל xml ב-querystring

שאלה
-
שלום
יש לי Form שמכיל webbrowser. ולהלן הקוד שבעצם קורא לאפליקציית web:
internalvoidNavigate(stringdocumentText) {
stringurl = "http://localhost:33604/CKEditor.aspx?xml="+ documentText;
webBrowser1.Navigae(newSystem.Uri(url));
אני מנסה לשרשר ל-URL מחרוזת המכילה בתוכה טקסט של XML.
הדפדפן לא אוהב את זה. כיצד אני יכולה אם כן להעביר את מחרוזת זו לאפליקציית ה- web?hilarbp
יום שני 05 מרץ 2012 14:19
תשובות
-
שפי ששלמה ציין, הבעיה שלך תהיה עם XML-ים גדולים בכל הקשור למגבלות של שרתי IIS ודפדפנים.
בכל מקרה הפתרון למקרה שלך הוא להשתמש עם URL Encoding - להמיר תווים בעיתיים לתווים שאפשר להעביר, ע"י שימוש ב-HttpUtility.UrlEncode
http://msdn.microsoft.com/en-us/library/system.web.httputility.urlencode.aspx
המתודה תקבל גם טקסט וגם byte array
Please mark posts as answers/helpful if it answers your question.
Senior Consultant on WCF, ASP.NET, Siverlight, and Entity Framework. Author of Microsoft's Official WCF 4 Course. Co-author of the Microsoft HPC/Azure burst whitepaper.
Visit my blog: http://blogs.microsoft.co.il/blogs/idof- הוצע כתשובה על-ידי Ido Flatow. _Moderator יום שישי 09 מרץ 2012 17:56
- סומן כתשובה על-ידי Eran Sharvit שבת 10 מרץ 2012 21:58
יום שלישי 06 מרץ 2012 12:56מנחה דיון
כל התגובות
-
כמו כן יש לציין שניסיתי כבר להפוך את המחרוזת ל-byte[] , אבל אח"כ לא הצלחתי לחלץ אותה מה-URL. אולי זה הכיוון ופשוט אין לי את השורה הנכונה של החילוץ?
hilarbp
יום שני 05 מרץ 2012 14:21 -
עקרונית, זה לא הגיוני להעביר קובץ xml ב - query sttring, ולא מפני הסיבה הפשוטה שזה מוגבל בגודל שלו (תלוי דפדפן, אבל הכי הרבה יהיה בסיביבות 8000 אותיות והכי נמוך יהיה בסיבובות 2000)
נסה יותר להביר מה אתה רוצה לעשות - ונשמח לנסות למצוא פיתרון
שלמה
יום שני 05 מרץ 2012 19:28מנחה דיון -
תודה על העזרה
להלן ההבהרה:
אני מנסה לעשות ( webbrowser.Navigate(URL מתוך Form . ובעצם ה- URL זוהי מחרוזת שמכילה טקסט שהוא XML.
כלומר לקרוא לאפליקציית web מתוך Form (שזה אפליקציית win) ולשלוח לה את המחרוזת הזאת.
איך ניתן לבצע זאת?
ושוב תודה
hilarbp
יום שלישי 06 מרץ 2012 06:51 -
תבדוק אם זה עוזר לך להבין את הפתרון:
http://www.dotnetfunda.com/articles/article840-working-with-webbrowser-in-wpf-.aspx
יום שלישי 06 מרץ 2012 12:06 -
שפי ששלמה ציין, הבעיה שלך תהיה עם XML-ים גדולים בכל הקשור למגבלות של שרתי IIS ודפדפנים.
בכל מקרה הפתרון למקרה שלך הוא להשתמש עם URL Encoding - להמיר תווים בעיתיים לתווים שאפשר להעביר, ע"י שימוש ב-HttpUtility.UrlEncode
http://msdn.microsoft.com/en-us/library/system.web.httputility.urlencode.aspx
המתודה תקבל גם טקסט וגם byte array
Please mark posts as answers/helpful if it answers your question.
Senior Consultant on WCF, ASP.NET, Siverlight, and Entity Framework. Author of Microsoft's Official WCF 4 Course. Co-author of the Microsoft HPC/Azure burst whitepaper.
Visit my blog: http://blogs.microsoft.co.il/blogs/idof- הוצע כתשובה על-ידי Ido Flatow. _Moderator יום שישי 09 מרץ 2012 17:56
- סומן כתשובה על-ידי Eran Sharvit שבת 10 מרץ 2012 21:58
יום שלישי 06 מרץ 2012 12:56מנחה דיון -
אנסה כיוון אחר בשאלה:
נגיד ושלחתי ב-url פרמטר בשם xml והערך שלו זה byte[]. מלכתחילה הערך היה string והמרתי אותו להיות byte[] על מנת לשלוח בלי בעיות ב-URL.
כעת כאשר אני עושה request.querystring["xml"] אני לא מצליחה לחלץ חזרה את המחרוזת ההתחלתית, שכן זו כעת מחרוזת של byte[] בכיסוי string,
וכשאני עושה GetString אני לא יכולה להכניס את ה- byte[] שכן זה התקבל כעת כ- string/
מה עלי לעשות כדי לחלץ את המחרוזת הראשונית??
תודה
hilarbp
יום שלישי 06 מרץ 2012 14:34 -
היי הילה.
מה שעידו אומר זה נכון.
URL יכול לקבל רק 64 סוגי תווים בערך כך שלא ניתן להעביר byte array בצורה ישירה ב URL.
אז
א. לא צריך להמיר את ה מחרוזת שלך ל מערך
ב. כאשר את שמה את המחרוזת ב URL יש להשתמש ב URLENCODE שהוא כבר ידאג לקודד תווים לא תקינים לאוסף של תווים תקינים שה requestquerystring יוכל להבין אותו טוב.
http://www.w3schools.com/tags/ref_urlencode.asp
בהצלחה
:)
- הוצע כתשובה על-ידי Ido Flatow. _Moderator יום שישי 09 מרץ 2012 17:56
יום שלישי 06 מרץ 2012 15:41 -
ועדיין אני עושה ככה:
string
url = "http://localhost:33604/CKEditor.aspx?xml="+ HttpUtility.UrlEncode(documentText);
webBrowser1.Navigate(
newSystem.Uri(url));
והוא מתריע על סכנה בהעברת מידע שכזה, מה יש לי עוד לעשות???
ההודעה:
A potentially dangerous Request.QueryString value was detected from the
client (xml="<?xml version="1.0" ...").hilarbp
יום שני 12 מרץ 2012 08:31 -
צריך להוסיף בweb.config
תחת <system.web>
את ההגדרה הבאה
<httpRuntime requestValidationMode="2.0" />יום רביעי 21 מרץ 2012 09:33