البرمجة

مشكلة NullReferenceException في توليد تقارير DevExpress

عند استخدام “ReportService” كمزود للتقارير لـ “AspxDocumentViewer” في “DevExpress 2016 ver.1.2″، يظهر “Object reference not set to an instance of an object” كتنبيه JS في المتصفح عند محاولة عرض التقرير.

يحتوي الاستثناء الداخلي المُلتقط على المعلومات التالية:

Object reference not set to an instance of an object.
at DevExpress.XtraReports.Web.Native.ReportRenderHelper.GetPreparedOptions()
at DevExpress.XtraReports.Web.Native.DocumentViewer.RemoteReportRenderHelper.CreatePageWebControl(IImageRepository imageRepository, Int32 pageIndex)
at DevExpress.XtraReports.Web.Native.ReportRenderHelper.WritePage(Int32 pageIndex)
at DevExpress.XtraReports.Web.Native.DocumentViewer.DocumentViewerReportWebRemoteMediator.<>c__DisplayClass2.b__1(PrintingSystemBase printingSystem)
at DevExpress.XtraReports.Web.Native.DocumentViewer.DocumentViewerRemoteHelper.DoWithRemoteDocument[T](Byte[] bytes, Int32 pageIndex, Int32 pageCount, Func`2 func)
at DevExpress.XtraReports.Web.Native.DocumentViewer.DocumentViewerReportWebRemoteMediator.GetPage(ReportViewer viewer, RemoteDocumentInformation documentInformation, Int32 pageIndex)
at DevExpress.XtraReports.Web.Native.DocumentViewer.DocumentViewerReportViewer.CallbackRemotePage()\r\n at DevExpress.XtraReports.Web.ReportViewer.GetCallbackResult()
at DevExpress.XtraReports.Web.ASPxDocumentViewer.GetCallbackResult()
at DevExpress.Web.ASPxWebControl.System.Web.UI.ICallbackEventHandler.GetCallbackResult()

أثناء التحقيق الصغير، لاحظت أن إنشاء التقرير يتوقف بعد طلب إلى طريقة “ReportService.GetPages” في أحد مواقع التعليم الداخلية لـ DevExpress.

يرجى ملاحظة أن نفس الحل يعمل بشكل صحيح باستخدام “DevExpress 15.2.7″، لذا يبدو أن هناك تغييرات مؤثرة بين الإصدارين.

كما أن نفس الحل يعمل أيضًا في الإصدار الحالي عند تعيين التقرير مباشرة إلى “AspxDocumentViewer.Report” (دون استخدام “ReportServiceClientFactory” و “ReportService”)، لذا يبدو أن المشكلة تكمن في “ReportService”.

يتم استخدام تطبيق ASP.Net WebForms، والتقرير بسيط جدًا (فارغ، دون استخدام البيانات).

تم إنشاء تذكرة على موقع DevExpress وتم إرفاق تطبيق عينة لإعادة إنتاج المشكلة.

تأكد من البحث في تفاصيل التذكرة وإعادة إنتاج المشكلة باستخدام التطبيق العينة المرفق لتحديد الخطأ والعمل على إيجاد حل له.

المزيد من المعلومات

بالطبع، سأقدم المزيد من المعلومات حول المشكلة المواجهة مع توليد التقارير باستخدام “DevExpress 16.2.1″ و”ReportService” على “WebForms”.

  1. سبب الخطأ:
    الخطأ الذي تظهره الرسالة “Object reference not set to an instance of an object” يشير عادة إلى محاولة الوصول إلى كائن غير معين، مما يؤدي إلى وجود قيمة “null” في مكان لا يمكن أن تكون قيمة “null” فيه.

  2. متى يحدث الخطأ:
    يبدو أن الخطأ يحدث عندما يقوم نظام التقارير في “DevExpress” بمحاولة تحضير الخيارات لعرض التقرير. هذا يعني أن هناك قسمًا من الكود الداخلي في “DevExpress” يحتاج إلى كائن معين لكنه يجده “null” بدلاً من ذلك.

  3. الفروق بين الإصدارين:
    يبدو أن هذه المشكلة لم تكن موجودة في الإصدار السابق “DevExpress 15.2.7”. من المهم معرفة ما تغير بين هذين الإصدارين فيما يتعلق بميزات “ReportService” أو أي تغييرات أخرى في الطريقة التي يتم فيها توليد التقارير.

  4. استكشاف الأخطاء:
    يتعين عليك التحقق من سلامة البيانات التي يتم تمريرها إلى “ReportService” والتأكد من أنها كافية وصحيحة لتوليد التقرير. كما يمكنك محاولة تشغيل تطبيق العينة الذي تم إرفاقه مع التذكرة للتأكد مما إذا كان يمكن إعادة إنتاج المشكلة.

  5. التواصل مع دعم DevExpress:
    إذا لم تتمكن من حل المشكلة بمفردك، فمن المستحسن التواصل مع فريق الدعم الفني في DevExpress. يمكن أن يقدموا المساعدة والتوجيه اللازمين لتحديد سبب المشكلة وإيجاد حلاً لها، وقد يقدمون تحديثًا أو تصحيحًا للمشكلة في إصدار مستقبلي.

مقالات ذات صلة

زر الذهاب إلى الأعلى
إغلاق

أنت تستخدم إضافة Adblock

يرجى تعطيل مانع الإعلانات حيث أن موقعنا غير مزعج ولا بأس من عرض الأعلانات لك فهي تعتبر كمصدر دخل لنا و دعم مقدم منك لنا لنستمر في تقديم المحتوى المناسب و المفيد لك فلا تبخل بدعمنا عزيزي الزائر