سلام استاد خسته نباشید
من دارم روی یک ربات تگرام کار میکنم
من برنامه رو روی windows app نوشتم وبعد از کامل شدن آن را برای وب هوک مینویسم که در کنترلر APi است
حالا من کد را به طور کامل تطبیق دادم با API ولی کد های من بدرستی کار نمیکنه
من در ApiController برنامه رو نوشتم به صورتی که در کد از کلاس های خارجی استفاده کردم و اونارو فراخوانی کردم
تصویر زیر قسمتی از کنترلر است
و تصویر زیر یکی از متد ها که نوشتم و فراخوانی کردم
ولی کدی که فراخوانی کردم به هیچ وجه فراخوانی نمیشه ...
چرا ؟ مشکل کجاست
برای نمایش کد ها از تصویر استفاده نکنید کدهای را در فرمت کد قرار دهید :)))))))
تمامی قسمت های موجود در خود اکشن post کار میکنه به جز کد هایی که به جای دیگر ارجاع داده شده
قسمتی از کد های فراخوانی شده
public class BotMethods { UnitOfWork un = new UnitOfWork(); public async Task<int> GetActionID(long ChatID) { var chatinfo = await Task.Run(() => un.gChatActionRepository.GetById(ChatID)); if (chatinfo == null) return 0; return chatinfo.ActionID; } public async Task UserInfoSet(long ChatID, long ADSID) { var UserInfo = await Task.Run(() => un.gBotUserInfoRepository.GetById(ChatID)); if (UserInfo == null) { BotUserInfo BI = new BotUserInfo() { ChatID = Convert.ToInt32(ChatID), ADSID = ADSID, Date = DateTime.Now, IsConfirm = false, }; await Task.Run(() => un.gBotUserInfoRepository.Insert(BI)); } else { UserInfo.ADSID = ADSID; UserInfo.Date = DateTime.Now; await Task.Run(() => un.gBotUserInfoRepository.Update(UserInfo)); } } public async Task DelContent() { var f = await Task.Run(() => un.gBotUserInfoRepository.Get(p => p.Date < DateTime.Now.AddDays(-14))); foreach (var item in f) { await Task.Run(() => un.gBotUserInfoRepository.Delete(item, false)); } await Task.Run(() => un.gBotUserInfoRepository.Save()); } public void SetChatAction(long ChatID, int Action) { var f = un.gChatActionRepository.GetById(ChatID); if (f == null) { var Chat = new ChatAction() { ActionID = Action, ChatID = ChatID, Date = DateTime.Now }; un.gChatActionRepository.Insert(Chat); } else { f.ActionID = Action; f.Date = DateTime.Now; un.gChatActionRepository.Save(); } } }
کنترلر
UnitOfWork un = new UnitOfWork(); BotMethods BM = new BotMethods(); public async Task<IHttpActionResult> post(Update update, string Token) { var bot = new TelegramBot(Token); keybOard = new ReplyKeyboardMarkup() { Keyboard = new[] { new[] { new KeyboardButton("پیگیری سفارش")}, new[] { new KeyboardButton("اطلاعات تماس فروشگاه")}, }, OneTimeKeyboard = true, ResizeKeyboard = false }; var from = update.Message.From; var text = update.Message.Text; var contact = update.Message.Contact; //محل قرار گیری کد هایی که نیاز به دانستن شماره اکشن ندارد\\ if (text != null) { #region /start + PID if (text.Contains("/start ")) { long id = Convert.ToInt64(text.Substring(7)); string t; var ProductAds = await Task.Run(() => un.gADsRepository.GetById(id)); var SubProduct = await Task.Run(() => un.gSubProductRepository.Get(p => p.ProductID == ProductAds.ProductID && p.Count != 0)); bot.MakeRequestAsync(new SendMessage( update.Message.Chat.Id, "با سلام \n سیستم در حال پردازش درخواست شما میباشد . \n لطفا شکیبا باشید ...")).Wait(); ProductAds.StCount++; un.gADsRepository.Save(); bot.MakeRequestAsync(new SendMessage( update.Message.Chat.Id, "\U0000270Fجهت کسب اطلاعات ومشاهده دیگر تصاویر(در صورت وجود) شماره تلفن همراه خود را وارد کنید ...\n" + "*\U000026A0این شماره موبایل برای ادامه خرید مورد استفاده قرار میگیرد*" + "\n \U000026F3 مرحله 1 از 3") { ParseMode = SendMessage.ParseModeEnum.Markdown }).Wait(); #region set ChatAction BM.SetChatAction(update.Message.Chat.Id, 1); #endregion #region Save in DB await BM.UserInfoSet(update.Message.Chat.Id, id); #endregion #region Delet 14 Day ago Content From DB BM.DelContent(); #endregion return Ok(); } }
متد Save در repository !!؟
Repository در UnitOfwork ؟!!
متد Save خودم اضافه کردم از قسمتی از دیگر متد ها. و در تمام قسمت پروژه هام ازش استفاده میکنم وو مشکلی هم نداره
استفاده از Repository در UnitOfWork از آموزه های استاد مدائنی عزیز است
لبته منظور از (g) اول متد ها Generic است
مشکل من اجرا نشدن متد ها است از سمت کنترلر
اصلا وارد متد نمیشود
با break point آن را Trace کرده اید ؟
تلگرام به سایت دارای SSL فقط اطلاعات رو ارسال میکنه
و من زمانی میتونم کد را امتحان کنم که بر روی هاست آپلود شده باشد که نمیدونم میشه آیا.
آیا میشود طور دیگه ای کد رو trace کرد؟
من حتی برای امتحان کد ها محتویات کد مربط رو کامنت کردم و کدی به صورت تست نوشتم و آن هم اجرا نشد
هیچ کاربری تا کنون از این پست تشکر نکرده است
با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)