none
יצירת פונקציה שרצה כל 5 דקות בשרתי אז'ור RRS feed

  • שאלה

  • צהרים טובים,

    כתבתי פונקצית טיימר בC#

    והיא באמת רצה כל 5 דקות, אך כשהעלתי אותה לשרת של אז'ור היא לא רצה..

    מה הדרך לעשות את זה?

    יום שלישי 30 אפריל 2019 10:34

כל התגובות

  • שלום שרה,

    לאיזה שרת העלית אותה?

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


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

    יום שלישי 30 אפריל 2019 13:42
    מנחה דיון
  • פרט לכך, בלי לראות קוד, הודעות שגיאה, צילומי מסך, וכו' אנחנו יכולים רק לנחש דברים

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

    יום שלישי 30 אפריל 2019 13:43
    מנחה דיון
  • תודה רבה!!

    העלתי לשרת App Service של פורטל אז'ור, (portal.azure.com)

    בקוד יצרתי טיימר, שבודק כל כמה זמן אם הגיע הצ'ק אין של האורח,

    ואם כן הוא מעדכן בDB ושולח נוטיפיקישן לאפליקציה.

    זה הקוד:

    [Route("CheckinNow")]
    [HttpGet]        
    public IHttpActionResult CheckinNow()        
    { 
               var startTimeSpan = TimeSpan.Zero; 
               var periodTimeSpan = TimeSpan.FromMinutes(1);
               string now = "";            SendNotification sendNotification = new SendNotification(); 
               var timer = new System.Threading.Timer((e) =>            {                //MyMethod();
                List<UserHotel> userHotels = db.UserHotels.Where(u => u.checkinNow == false || u.checkinNow == null).ToList();
                foreach (var item in userHotels) 
                {                   
                   if (item.Checkin <= DateTime.Now)                    
                   {                       
                           item.checkinNow = true; 
                           now += item.UserHotelId;                        
                           sendNotification.listChecked.Add(item.UserHotelId);             
                           db.Entry(item).State = EntityState.Modified;
                           db.SaveChanges();                    
                     }               
                }               
                sendNotification.title = "CheckinNow";              
                sendNotification.body = "CheckinNow";                
                SendNotificationHotel(sendNotification);   
             }, null, startTimeSpan, periodTimeSpan);           
         return Ok(DateTime.Now.ToString() + now);      
      }

    יום רביעי 01 מאי 2019 07:31
  • היי,

    אפליקציית ASP.Net לא מתאימה כל כך לעבודה עם טיימר מכיוון שמדובר על אפליקציה שמבוססת על REST (הטריגר להפעלה הוא הלקוח שפונה אל האפליקציה).

    תבדקי אם את יכולה לעבוד עם  Azure function או Azure Webjob


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

    יום רביעי 01 מאי 2019 13:54
    מנחה דיון
  • האפליקציה קוראת לשרת פעם ראשונה,

    כך שיש מי שמפעיל את הפונקציה,

    נראה לי שהבעיה היא שה time zone של האפליקציה והמחשב המקומי שונה מהtime zone של ה App Service..

    יום חמישי 02 מאי 2019 08:50
  • אני נתקלתי בבעיות אחרות כמו שהזכרתי מעל. אפיקציית asp.net ישנה (sleep) עד שמתקבלת קריאה אליה ולכן פעולות מתוזמנות לא עובדות טוב. כאשר יש שליטה על ה IIS אז אפשר לקבוע את האפליקציה תקבל פינג ותאר במצב ער אבל בענן אין לנו שליטה על זה. פעולות כאלה פשוט לא מתאימות לאפליקציות asp.net אלא יותר לשירותים (במכונה מקומית למשל נוכל לעבוד עם שרתים כמו wcf)

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


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

    יום חמישי 02 מאי 2019 18:07
    מנחה דיון