• 1400/02/11

Bad Request - Request Too Long :

سلام استاد عزیز

من مشکل ارور Bad Request - Request Too Long رو دارم.

اینجوری هست که وقتی کاربر برای بار اول وارد سایت میشه و هیچ کوکی نداره ،مشکلی نیست.

اما مشکل از اینجا شروع میشه که کاربر وقتی داره لاگین میکنه بعد از لاگین شدن که کوکی ها ست میشد دیگه هیچ صفحه ای از سایت نمایش داده نمیشه و ارور Bad Request نمایش داده میشه.

و اگه کوکی ها رو پاک کنم دو باره بعنوان کاربری که برای اولین وارد سایت شده صفحاتی که نیاز به Authorize نداره لود کنه مشکلی نیست.

برای قسمت identity هم در اول پروژه از scaffolding استفاده کردم و کد ها خودشون Generate شدن ، البته بسته به نیازم تغییراتی دادم که تا الان مشکلی نداشتم.

الان تقریبا اخر های پروژمه و تا حالا همچین اتفاقی رو ندیده بودم 

اصلا دلیل منطقی هم براش پیدا نمیکنم و سرچ هم کردم به نتیجه درستی نرسیدم.

ممنون میشم اگه یه کمکی کنین 3روزه جلومو گرفته و نمیتونم کار جدیدی شروع کنم.

 

  • 1400/02/11
  • ساعت 19:03

سلام عزیز.

احتمالش هست که کوکی هایه ایجاد شده برای سایت شما یا تعدادشون یا حجمشون از میزان مجاز بالاتر رفته، تعداد و حجم کلیشون رو بررسی کنید ببینید توی رنج مجاز هستش؟


  • 1400/02/11
  • ساعت 19:26

سلام ممنون که پاسخ دادید

این لیست کوکی هایه من بعد از لاگین هست.آیا مشکلی میبینید؟

و اینکه اگه حجمشون مشکل داشته باشه چجور برطرف کنم؟


  • 1400/02/11
  • ساعت 20:30

خواهش میکنم عزیز.

دقیق مطمئن نیستم حداکثر مجاز چقدر هستش ولی طبق چیزی که توی این سایت هستش :

https://www.lifewire.com/cookie-limit-per-domain-3466809

حداقل برای کروم نباید مشکلی باشه.

ممکنه مشکل از سمت تنظیمات IIS یا asp.net core باشه. تنظیمات حداکثر سایز Header یا کوکی هاشون رو بررسی بکنید چقدر هستند و طبق نیاز تغییر بدید.

دلیل این ارور احتمال خیلی زیاد مربوط به سایز کوکی هاتون هستش که بالارفتن. بیشتر از 16KB کوکی ست کردین که این مشکل داره به وجود میاد.


  • 1400/02/11
  • ساعت 23:28

استاد واقعا علم و دانشتون زیاده

گفته ی شما درسته و مشکل از کوکی هاست.

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

الان سوالم اینجاست که چرا تو اکانت اصلی من 5تا کوکی هست که مانع میشه؟؟؟؟

identity چه اطلاعاتی رو در اونا ذخیره کرده که اینهمه شده؟؟

در مورد افزایش cookie limit هم سرچ کردم و یکی دوتا جواب بنظرم درست اومد که از اونا هم هیچی متوجه نشدم.


  • 1400/02/11
  • ساعت 23:44

به نظرم این لینک پاسخ منه.

ولی دقیقا داره چیکار میکنه؟؟


  • 1400/02/12
  • ساعت 00:58

استاد متوجه شدم .چون من از DynamicRole استفاده کردم. identity میاد RoleClaimهای مرتبط با کاربر رو در کوکی ذخیره میکنه و هنگامی که من دوتا Role به کاربر میدم تعداد claim ها زیاد میشه و درنتیجه این مشکلات بوجود میاد.

الان دنبال راه حلم.

یا باید کاری کرد که اون limit کوکی ها زیاد شه.

یا اینکه کاری کنیم claim ها تو کوکی ذخیره نشه.

و متاسفانه در هر دو نمیدونم باید چیکار کنم 🤦‍♂️


  • 1400/02/12
  • ساعت 11:23

تنظیمات رو به این صورت میتونید تغییر بدید :

توی startup :

services.Configure<KestrelServerOptions>(options =>
{
	options.Limits.MaxRequestHeadersTotalSize = 1024; // KB
});

که البته به صورت دیفالت سایزش 32 KB هستش و فکر نمیکنم مشکل ساز بشه.

و تنظیمات ویندوز سرور باید بری توی رجیستری ( Registery ) و مقدارش رو تغییر بدید :

https://serverfault.com/questions/417113/iis-6-header-too-big-how-to-tune-this-iis-setting

اگر آدرس رجیستری توی لینک بالا رو پیدا نکردید از لینک زیر استفاده کنین ( آموزشش تقریبا پایین صفحه هستش ) :

https://support.microsoft.com/en-us/topic/how-to-limit-the-header-size-of-the-http-transmission-that-iis-accepts-from-a-client-in-windows-2000-a81639da-f1e9-2273-6de1-12f5b258a5c5

اینم در نظر داشته باشید که حجم و تعداد کوکی ها هم سمت سرور و هم سمت کاربر ( مرورگر ) limit دارند و اگر شما لیمیت سمت سرور رو افزایش بدی ممکنه باز هم ارور داشته باشی چون کوکی از لیمیت مرورگر بیشتر شده.

البته فکر کنم دارید از احرازهویت داینامیک ورژن 1 استفاده میکنید که توی اون حجم Claim ها، به دلیل نحوه ساخته شدنشون بالا هستن. توی ورژن 2 که منتشر شده حجم Claim ها میتونه کمتر بشه. اگر دارید از ورژن 2 استفاده میکنید میتونید برای کمتر کردن کوکی ها بعضی جاها که امکانش هست برای چندتا اکشن متود از یه ClaimValue استفاده بکنید که تعدادشون کمتر بشه. همچنین پیشنهاد میکنم صرفا برای سمت ادمین یا اپراتور های سایت از احرازهویت داینامیک استفاده کنید و سمت کاربران عادی از روش های دیگه استفاده کنید، چون که کوکی ها توسط مرورگر کاربر توی هر درخواست ارسال میشن و اگر سرعت اینترنت کاربر کم باشه یا از موبایل استفاده بکنه، درخواستش تا ارسال بشه و پردازش بشه طول میکشه و بیشتر کاربران اگر سرعت این عملیات کم باشه کلا از سایت بیرون میرن. به خاطر همین بهتره حجم کوکی های کاربر رو کم نگه داریم.


  • 1400/02/12
  • ساعت 12:32

استاد واقعا ازتون سپاس گذارم،همیشه وقتی از اینجا سوال میکنم دست پر برمیگردم

بسیارررر ممنون 


  • 1400/02/12
  • ساعت 15:09

خواهش میکنم عزیز، خوشحالم تونستم کمکتون بکنم.
موفق باشید.


logo-samandehi