سلام استاد
متد 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;
}
سلام
متن ارور را قرار دهید
اینطوری نمیشه مشکل رو پیدا کرد
سمت سرور دیباگ کنید تا مطمئن بشید توکن ارسال میشه و معتبر نیز هست
سلام استاد
جواب این سوالی که پرسیدم رو بالاخره متوجه شدم گقتم اینجا بگم شاید دوستان دیگه هم به همین مشکل برخورده باشن.
httpclient باید در یک وهله استفاده بشه. یعنی بصورت سراسری. و new کردن httpclient های مختلف اشتباهه. به مین دلیل در دات نت کور 2.1 به بعد httpclientfactory معرفی شد تا از httpclent بصورت singleton استفاده بشه.
در زامارین هم که امکان تزریق وابستگی وجود نداره یا اگر هم باشه بنده بلدش نیستم وقتی از httpclient در سرویسهای مختلف با یک BaseAddress استفاده می کنیم این مشکل پیش میاد. دلیلش هم اینه که httpclient نمیتونه BaseAddress رو در نمونه های خودش به اشتراک بزاره.
در پروژه زامارین خودم وقتی httpclient رو بصورت سراسری استفاده کردم مشکل حل شد.
ممنون از شما
برای خودم جالب بود