خطای E_LoadingAjax /api/RoxyFileman/DIRLIST در زمان اضافه کردن RoxyFileMan در MVC Core

11/26/2020 MVC
162

چهار روز بود که درگیر این خطا بودم 

 

E_LoadingAjax /api/RoxyFileman/DIRLIST

به این صورت که زمانی که کاربر در صفحه کنترل پنل خود از TinyMCE استفاده میکندو برای آپلود عکس یا فیلم و یا اسناد بخواهد از افزوه RoxyFileMan استفاده کند لازم است تا 

  1.  فایل TinyMCE را به قسمت wwwroot  اضافه کند
  2. فایل RoxyFileMan برای دات نت را در پوشه جداگانه در کنار TinyMCE و یا در خود پوشه TinyMCE بگذارد.
  3. در پروژه های دات نت و  دات نت کور (.net , .net Core) لازم است تا یک کنترلر نیز به پروژه اضافه کنید،
  4. در پروژه های MCV (Model, Controller, View)  که به صورت پیشفرض پوشه های مربوطه را دارد به راحتی میتوانید Controller  مربوط به RoxyFileMan  را به پوشه کنترلر اضافه کنید تنها ادرس های مربوط به محل ذخیره را تغییر دهید ،  اما زمانی سر خودتون رو به  دیوار میکوبید( به مدت 4 روز برای من ) که خطا ایجاد شده است و نمیدانید خطا ممکن است مربوط به کدام قسمت کد باشد، آیا دسترسی به File Man دچار مشکل شده ، ایا بهترین جایگاه برای فایل Controller کجاست توی قسمت کنترل پنل بگذرام یا در روت سایت؟ ممکن است مثلا خطا مربوط به (../..) ادرس  دسترسی به RoxyFileMan باشد یا ممکن است تغییر ورژن دات نت کور و تغییر در اضاه شدم Json  به پیشفرضهای داتنت این خطا رو به وجو اورده ، یا نه ممکن است از تغیییر روت در دات نت باشد و هزاران چیز دیگر که توی آین چهار روز تست کردم 

اما کنترلر یک API است پس یابه صورت پیشفرض مبتوانم با استقاده از Postman  به برگشتی های آن دسترسی پیدا کنم، تازه گرفتم  که مشکل از عدم دسترسی به کنترلر هست ، چرا سیستم به کنترلر دسترسی ندارد در صورتی که فایل کنترلر به ضورت Public  تعریف شده

یه تغییر در دات نت کور داشتیم (از کدوم ورژن یادم نیست ) اما این بود که کنترل رها به جای ارث بریا از Controller بهتر بود از ContrllerBase  استفاده کنید 

دوباره مشکل بعدی توی کنترلر از

return Jason()

استفاده میشد سیستم خطا میداد

باید تبدیل میکردم به 

 return new JsonResult

 

از طرفی برای استفاده از root کردن Controller باید در روت پیشفرض تغییری دهید.

app.UseEndpoints (endpoints => {
                endpoints.MapRazorPages ();
                endpoints.MapControllers();
            });

حالا پروژه را اجراکردم بلاخره حل شد.

خلاصه اینکه اضافه کردن کنترلر در Razor Pages ها باید کنترلر از ControllerBase  ارثبری کند نه از Controller تا در پروژه دیده شود 

خنده دار بود و لی لذت برنا منویسی به همینه