none
בוצעו ניסיונות רבים מדי לניתובים מחדש אוטומטיים RRS feed

  • שאלה

  • אני צריכה לטעון דף XML בשביל לשאוב משם נתונים 

    יצרתי אובייקט מסוג xDoc והטענתי לתוכו את כתובת האינטרנט בצורה הבאה 

     
    Dim xDoc As XmlDocument = New XmlDocument()            xDoc.Load("http://www.ims.gov.il/ims/PublicXML/isr_cities.xml")

    לפעמים עובד טוב לפעמים  מראה את השגיאה הבאה

    "בוצעו ניסיונות רבים מדי לניתובים מחדש אוטומטיים"

     היום לדוג זה קרה על הבוקר בפעם הראשונה שהפעלתי את הפרויקט , ז"א שלא היה בכלל גישות לאתר זה מהמחשב שלי אותו יום

    העניין הוא  שאם אני נכנסת לאתר האינטרנט הזה יוצאת ואז מנסה להפעיל את הפרויקט עובד בסדר 


    יום ראשון 10 אפריל 2016 05:40

תשובות

  • הדרך הכי פשוטה זה כניראה ליצור אפליקציית שירות קטנה למשל WCF או אפליקציית WEB (במקרה כזה צריך לוודא שהשרת IIS מוגדר לשמור את האפליקציה חיה). באפליקציה ניתן לבצע נסיון לקרוא את הקישור כל X זמן. אם הקריאה הצליחה אז הכל מכניסים את התוכן למסד הנתונים או יוצרים קובץ חדש עם המידע, ואם היה כשלון בגישה לקישור או שהגיע מידע שאינו מתאים למה שמחשים (למשל לא כולל את <IsraelCitiesWeatherForecastEvening>) אז לא עושים כלום. בצורה כזו האפליקציה רצה ברקע כל השמן ועם היא מצליחה אז מקבלים קובת עדכני ואם לא אז בנסיון הבא

    * אפשר לבצע את הנסיון הבא כל יום למשל אם היתה הצלחה ובעוד 30 דקות אם לא היתה הצלחה.

    ** את צריכה לזכור שהאתר יכול לבצע חסימות לגישה בשיטות שונות החל מחסימה ל IP, חסימה לפי מי שפונה אליו יותר מדי פעמים, חסימה לפי שאינו מגיע מדפדפן (אפשר לעקוף על ידי חיקוי HEAR-ים של דפדפן כלשהו), ועוד...


    signature   Ronen Ariely
     [Personal Site]    [Blog]    [Facebook]    [Linkedin]

    • סומן כתשובה על-ידי MALCA123456 יום שלישי 12 אפריל 2016 05:49
    יום שני 11 אפריל 2016 20:02
    מנחה דיון

כל התגובות

  • בוקר טוב מלקל

    מכיוון שמדובר על מצב של "פעם עובד ופעם לא", ולפי התיאור כאן, זה נשמע לי כמו משהו שקשור במערכת שנותנת לך שירות ולא בצד שמקבל את השירות. יכול להיות שהם מגבילים במכוון שמספר הפניות באוו SESSION או מ IP מסויים או למשל שפשוט יש להם בעיות לתת את השירות בכמות/איכות המתבקשת. אני ממליץ לפנות אליהם

    בכל מקרה אין שום דרך לנטר את הבעיה עם המידע שהבאת.
    אם אתה רוצה לצרף קובץ ZIP עם פרוייקט לדוגמה שכולל רק את המינימום הקשור לבעיה אז אולי לנסות לנטר יותר, אבל כמו הסיפור עם הילד שחולה וכאשר מגיעים לרופא הוא תמיד מרגיש טוב פתאום, הרי שזה יכול להיות הסיפור כאן. לפחות זה יתן נקודת פתיחה


    signature   Ronen Ariely
     [Personal Site]    [Blog]    [Facebook]    [Linkedin]

    יום ראשון 10 אפריל 2016 07:17
    מנחה דיון
  • רעיון: אולי במקום לגשת לקישור הרבה פעמים, אפשר להוריד אותו פעם בכמה זמן, בהתאם לשינויים שיש בו, ולפנות אליו מקומית?

    signature   Ronen Ariely
     [Personal Site]    [Blog]    [Facebook]    [Linkedin]


    יום ראשון 10 אפריל 2016 11:37
    מנחה דיון
  • תודה על כל הרעיונות 

    רעיון: אולי במקום לגשת לקישור הרבה פעמים, אפשר להוריד אותו פעם בכמה זמן, בהתאם לשינויים שיש בו, ולפנות אליו מקומית?-

    זה לא עוזר כיוון שלפעמים נופל על הפעם הראשונה של הטעינה ובנוסף כל פעם שצריך לגשת אליו זה כאשר מתעדכן באינטרנט.

    שמתי לב שאם  כאשר נתקע פותחים אותו דרך האינטרנט  באופן ידני הכול מסתדר

    ניסיתי לפתוח אותו דרך התוכנה באמצעות האובייקט WebBrowser זה פתר את השגיאה 

    בוצעו ניסיונות רבים מדי לניתובים מחדש אוטומטיים

    אבל יש לי בעיה חדשה 

     לא מצליח לטעון טוב את דף הXML  לאובייקט XmlDocument  מזהים זאת לפי התכונה INNERXML במקום שיהיו בה תגיות XML -זה מה שמופיע:
    <html><body><script>document.cookie='bbbbbbb=53cf4d9cbbbbbbb_53cf4d9c; path=/';window.location.href=window.location.href;</script></body

    כאשר פותחים באופן ידני זה  פותר גם את זה 

    יש לך רעיון ??????

    יום שני 11 אפריל 2016 06:58
  • אני רוצה להעלות את הקובץ דרך מה אני יעלה אותו?
    יום שני 11 אפריל 2016 11:10
  • הדרך הכי פשוטה זה כניראה ליצור אפליקציית שירות קטנה למשל WCF או אפליקציית WEB (במקרה כזה צריך לוודא שהשרת IIS מוגדר לשמור את האפליקציה חיה). באפליקציה ניתן לבצע נסיון לקרוא את הקישור כל X זמן. אם הקריאה הצליחה אז הכל מכניסים את התוכן למסד הנתונים או יוצרים קובץ חדש עם המידע, ואם היה כשלון בגישה לקישור או שהגיע מידע שאינו מתאים למה שמחשים (למשל לא כולל את <IsraelCitiesWeatherForecastEvening>) אז לא עושים כלום. בצורה כזו האפליקציה רצה ברקע כל השמן ועם היא מצליחה אז מקבלים קובת עדכני ואם לא אז בנסיון הבא

    * אפשר לבצע את הנסיון הבא כל יום למשל אם היתה הצלחה ובעוד 30 דקות אם לא היתה הצלחה.

    ** את צריכה לזכור שהאתר יכול לבצע חסימות לגישה בשיטות שונות החל מחסימה ל IP, חסימה לפי מי שפונה אליו יותר מדי פעמים, חסימה לפי שאינו מגיע מדפדפן (אפשר לעקוף על ידי חיקוי HEAR-ים של דפדפן כלשהו), ועוד...


    signature   Ronen Ariely
     [Personal Site]    [Blog]    [Facebook]    [Linkedin]

    • סומן כתשובה על-ידי MALCA123456 יום שלישי 12 אפריל 2016 05:49
    יום שני 11 אפריל 2016 20:02
    מנחה דיון
  • תודה רעיון גאוני!!! 

    ממש עזרתה לי 

    חשבתי שאולי אפשר במקום להעביר לDB לשמור את את דף האנטרנט כדף XML ואז יהיה יותר קל לקחת משם

    אפשר לעקוף על ידי חיקוי HEAR-ים של דפדפן כלשהו-  לא הבנתי איך ומה זה אומר

    יום שלישי 12 אפריל 2016 05:58
  • עקבתי אחרי השאלה ורציתי לשאול איך ניתן לעשות דבר כזה דרך wcf? -

    יש לי ידע בסיסי בwcf ולפי מה שהבנתי הwcf מקבל בקשות ואז מבצע אותם ומחזיר תשובות.

    יש דרך נוספת לעבוד עם הwcf? -חוץ מקבלת בקשות וביצועם? (כגון הפעלת טיימר -או שזה קשור רק ל windows service ?)

    יום שלישי 12 אפריל 2016 05:58
  • תודה רעיון גאוני!!! 

    ממש עזרתה לי 

    חשבתי שאולי אפשר במקום להעביר לDB לשמור את את דף האנטרנט כדף XML ואז יהיה יותר קל לקחת משם

    אפשר לעקוף על ידי חיקוי HEAR-ים של דפדפן כלשהו-  לא הבנתי איך ומה זה אומר

    >> חיקוי HEAR-ים של דפדפן כלשהו

    אתה מכיר אתרים שמזהים עם איזה דפדפן אתה גולש?
    כיצד הם יודעים את זה?!?

    התשובה היא שהדפדפן שולח אינפורמציה שאינה קשורה ישירות לתוכן העמוד וכוללת למשל את סוג הדפדפן, באותו זמן שהדפדפן ששולח את ה request לקבלת האינפורמציה מהאפליקציה (מאתר האינטרנט למ של הוא מבקש לקבל את ה HTML ואת שאר המידע הרלוונטי). 

    ניתן לגשת למידע בכותרים (בעברית המילה ל header היא כותר) בעזרת Request.Headers וככה ברמת האפליקציה לבדוק נתונים נוספים.
    https://msdn.microsoft.com/en-us/library/system.web.httprequest.headers%28v=vs.110%29.aspx
    http://www.dotnetperls.com/request-headers

    * אני ממליץ ללמוד על הנושא מעט יותר בצורה מסודרת (הקישורים מעל אינם יעילים ללימוד מסודר, אלא רק מראה דוגמה בסיסית של שימוש ב Request.Headers

    כדי להוסיף כותרים שלנו אנחנו יכולים למשל לעבוד עם הפקודה

    Response.Headers.Add("MyHeader", "test");
    ** אחת התוכנות הכי יעילות שהיא לדעתי חובה לכל מפתח WEB היא fiddler. זו תוכנה חינמית מבית telerik שמאפשרת מצד אחד לבצע ניטור של כל התעבורה וככה לראות מה קורה באמת מאחורי הלקעים, ומצד שני מאפשרתץ גם לחקות בצורה פשוטה דפדפנים שוניםץ אני ממליץ לחקור מעט את התוכנה וללמוד לעמוק כידצ לעבוד איתה.
    http://www.telerik.com/fiddler

    לכך בקצרה הכוונה ב חיקוי HEAR-ים של דפדפן כלשהו זה שאנחנו יוצרים באפליקציטה שלנו פנייה אל עמוד האינטרנט המרוחק ומוסיפים בכותרים כדי לחקות כאילו הפנייה נעשתה מדפדפן מסויים

    Fiddler

    signature   Ronen Ariely
     [Personal Site]    [Blog]    [Facebook]    [Linkedin]

    יום שלישי 12 אפריל 2016 18:44
    מנחה דיון
  • עקבתי אחרי השאלה ורציתי לשאול איך ניתן לעשות דבר כזה דרך wcf? -

    יש לי ידע בסיסי בwcf ולפי מה שהבנתי הwcf מקבל בקשות ואז מבצע אותם ומחזיר תשובות.

    יש דרך נוספת לעבוד עם הwcf? -חוץ מקבלת בקשות וביצועם? (כגון הפעלת טיימר -או שזה קשור רק ל windows service ?)

    WCF היא אפליקציית שירות שיכולה לתת מענה לפניות כפי שכתבת, אבל מה שהיא עושה מאחורי הקלעים יכול להיות כל דבר, והפניה אליה יכולה להיות מכל מתזמן משימות שאתה רוצה. אתה יכול לעבוד למשל עם מתזמן משימות של מערכת ההפעלה או לפתח אפליקציית שירות שלך. התפקיד של ה WCF כאן הוא רק לבצע את קבלת הפנייה מהאפליקציה המרכזית (האפליקציה שעליה דובר מתחילת השרשור) ואז היא פונה אל מקור המידע ששמרת בו את הנתונים של הדף ובמקביל ה WCF יבצע את התזמון של מתזמן המשימות הבא. שירות ה WCF מהווה שירות מקשר מעין שכבת ביניים מאחורי הקלעים. אתה יכול לדלג עליו כמובן אם אתה רוצה.

    יש אפשרות למשל באפליקציה לפתוח THREAD ולבצע Thread.Sleep על מנת להמתין לתיזמון הבא. זה שיטה מאוד מאוד לא יעילה בדרך כלל ולכן לא מומלצת לרוב המצבים. אפשרות נוספת הרבה הרבה יותר יעילה היא עבודה באמצעות Timer.

    לגבי תזמון המשימות הנה דוגמה שמצאתי בגוגל כרגע ויכולולת לעזור (לא בדקתי את הקוד אלא רק ברפרוף מהיר קראתי את הכותרות! אל תריצו קוד בלי בלדוק מה הוא עושה ואל תבצעו העתקה והדבקה לאפליקציה שלכם בלי לבדוק תחילה שאתם מבינים מה הקוד עושה בדיוק)

    * wrapper for the Windows Task Scheduler
    http://taskscheduler.codeplex.com/

    * Task Scheduler
    http://www.codeproject.com/Articles/38553/Task-Scheduler


    signature   Ronen Ariely
     [Personal Site]    [Blog]    [Facebook]    [Linkedin]


    יום שלישי 12 אפריל 2016 19:04
    מנחה דיון