• 1399/05/13

jwt در زامارین :

سلام استاد

متد web api رو از طریق swagger یا postman وقتی صدا میزنم کامل جواب میده ولی از داخل اپ زامارین کد html صفحه لاگین رو برام برمیگردونه

قبلا در یه پستی دیدم که یکی از مشتریانتون هم به همین مشکل خوردن اما سوال و جواب به نتیجه نرسیده بود. به نظر شما مشکل کجاست.

private static readonly HttpClient Client;
        static PeopleService()
        {
            Client = new HttpClient
            {
                BaseAddress = General.Mokeb.ApiBaseAddress,
                DefaultRequestHeaders =
                {
                    Authorization = new AuthenticationHeaderValue("Bearer", General.Mokeb.CurrentUser.Token)
                }
            };
        }

        public static async Task<List<PeopleListViewModel>> GetPeopleList(int mosqueId)
        {
            var result = await Client.GetStringAsync("People/GetPeopleList/" + mosqueId.ToString()).ConfigureAwait(false);
            var list = JsonConvert.DeserializeObject<List<PeopleListViewModel>>(result);
            return list;
        }
  • 1399/05/13
  • ساعت 11:06

سلام

متن ارور را قرار دهید

اینطوری نمیشه مشکل رو پیدا کرد 


  • 1399/05/13
  • ساعت 11:07

سمت سرور دیباگ کنید تا مطمئن بشید توکن ارسال میشه و معتبر نیز هست


  • 1399/06/01
  • ساعت 15:32

سلام استاد

جواب این سوالی که پرسیدم رو بالاخره متوجه شدم گقتم اینجا بگم شاید دوستان دیگه هم به همین مشکل برخورده باشن.

httpclient باید در یک وهله استفاده بشه. یعنی بصورت سراسری. و new کردن httpclient های مختلف اشتباهه. به مین دلیل در دات نت کور 2.1 به بعد httpclientfactory  معرفی شد تا از httpclent بصورت singleton استفاده بشه.

در زامارین هم که امکان تزریق وابستگی وجود نداره یا اگر هم باشه بنده بلدش نیستم وقتی از httpclient در سرویسهای مختلف با یک BaseAddress استفاده می کنیم این مشکل پیش میاد. دلیلش هم اینه که httpclient نمیتونه BaseAddress رو در نمونه های خودش به اشتراک بزاره.

در پروژه زامارین خودم وقتی httpclient  رو بصورت سراسری استفاده کردم مشکل حل شد.


  • 1399/06/01
  • ساعت 15:55

ممنون از شما 

برای خودم جالب بود


logo-samandehi