.NET Crystal Report Printing Application قيد التشغيل على أخطاء اتصال الخدمة النهائية عند فصل الجلسة

StackOverflow https://stackoverflow.com/questions/602295

سؤال

لقد قمت بإنشاء تطبيق .NET لتشغيله على خادم تطبيق يحصل على طلبات لتقرير وطباعة التقرير المطلوب.

يستخدم تطبيق C# تقارير Crystal لتحميل التقرير ثم طباعته لاحقًا.

يتم تشغيل التطبيق على الخادم الذي يتم توصيله عبر اتصال سطح المكتب عن بُعد ضمن حساب مستخدم معين (مطلوب للتطبيقات القديمة). عندما أقوم بالانفصال عن الجلسة البعيدة ، يبدأ التطبيق في رفع استثناءات مثل:

الرسالة: Crystaldecisions.shared.crystalReportSexception: فشل تقرير التحميل

لا يتم رفع هذا النوع من الخطأ أبدًا عندما تكون الجلسة البعيدة نشطة. يعمل الخادم الذي يعمل على تشغيل التطبيق Windows Server 2003 ، مربعتي التي تنشئ الاتصال هو Windows XP.

إنني أقدر أن هذا غريب إلى حد ما ، ومع ذلك لا يمكنني رؤية أي مشكلة في نشر التطبيق الذي أنشأته.

هل يعرف أحد ما الذي يمكن أن يكون سبب هذه القضية؟

تحرير: لقد قامت بتأسيس الرصاصة وقمت بإنشاء التطبيق كخدمة Windows ، من الواضح أن هذا لا يستغرق وقتًا طويلاً ، ولم أكن مقتنعًا بأنه سيحل المشكلة. على أي حال لا !!!

لقد حاولت أيضًا إزالة الكود متعدد الخيوط الذي كان يصف وظيفة الطباعة بشكل غير متزامن. لقد فعلت ذلك من أجل ببساطة التطبيق وتضييق سبب فشله. على أي حال ، هذا لم يحسن الموقف أيضًا!

تحرير: الأخطاء التي أحصل عليها هي:

System.Runtime.InterOpservices.Comexception (0x80000201): طابعة غير صالحة المحددة. في crystaldecisions.reportappserver.controllers.printoutPutControllerClass.ModifyPrintername (سلسلة NewVal) في Crystaldecisions.crystalReports.engine.prints.set_printername (قيمة السلسلة) في dsa.printserver.service.service.printcster.

الطابعة غير صالحة ، يتم تأكيد ذلك عندما يتم بعد 60 ثانية في الوقت الحالي للوقت ويتم طباعة التقرير بنجاح.

و

لا يمكن تقديم الطلب لمعالجة الخلفية. at CrystalDecisions.ReportAppServer.Controllers.ReportSourceClass.GetLastPageNumber(RequestContext pRequestContext) at CrystalDecisions.ReportSource.EromReportSourceBase.GetLastPageNumber(ReportPageRequestContext reqContext) --- End of inner exception stack trace --- at CrystalDecisions.ReportAppServer.ConvertDotNetToErom.ThrowDotNetException(Exception e) في Crystaldecisions.ReportSource.eromReportSourceBase.getLastPagenumber (ReportPagerequestContext reqcontext) في Crystaldecisions.crystalreports.engine.fortengine.printtoPrinter (int32 ncopies ، booleant ، int32 startpagen ، Collated ، int32 StartPagen ، int32 Endpagen) في dsa.printserver.service.service.printcrystalreport (تقرير تقرير)

تعديل:

ركضت Filemon للتحقق مما إذا كان هناك أي مشكلة وصول. عند النقطة التي يحدث فيها الخطأ في ملف تقارير MON

الطلب: فتح | المسار: C: Windows Assembly gac_msil system 2.0.0.0__b77a5c561934e089 ws2_32.dll | النتيجة: لم يتم العثور عليها | آخر: خطأ السمات

هل كانت مفيدة؟

المحلول

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

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

نصائح أخرى

لقد واجهنا هذه الأخطاء عدة مرات في السنوات القليلة الماضية. في كثير من الأحيان تمنيت لرسالة خطأ أكثر تحديدًا.

أولاً ، أود أن أتحقق من عدم تثبيت إصدارات تقارير كريستال متعددة. في Expereince لدينا ، وجدنا أن Crystal Reports 9.0 لا يبدو أنها تلعب بشكل جيد مع 10. يبدو أن إلغاء تثبيت الإصدار 9 يساعد بعض عملائنا. إذا تم تثبيت كلاهما ، فإنني أوصي بإلغاء التثبيت على حد سواء, ، ثم إعادة تثبيت Crystal التقارير 10.

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

في الآونة الأخيرة ، وصلنا إلى بصق "لا يمكن تقديم الطلب لمعالجة الخلفية". و "طابعة غير صالحة" أخطاء. كان لدى خادم أحد العملاء العديد من طابعات الشبكة المحددة بواسطة عنوان IP. ستعمل الطباعة بشكل جيد لفترة من الوقت ، ثم فجأة ، بام, ، حصل العميل على خطأ "الطابعة غير صالحة" ودعا دعمنا.

قام زميل مطور إصلاح مشكلة "الطابعة غير الصالحة" من خلال القيام بكل الأشياء التالية:

  1. قم بتحرير وحفظ ملف .rpt في Visual Studio 2005. لقد تم الحفاظ على تنسيق التقرير متوافقًا مع Crystal Reports 9 ، لأننا أردنا أن تكون تغييراتنا قابلة للتوزيع على عملائنا الذين لا يزالون يستخدمون الإصدارات القديمة.
  2. حفظ ملفات Crystal التقارير مع خيار "لا طابعة". من قائمة Visual Studio 2005 ، حدد Crystal Reports/Design/Printer Setup ، ثم حدد خانة الاختيار "No Printer".
  3. قمنا بتغيير صيغة عرضت "صفحة N of M" من شيء غريب مثل هذا:

"Page " + Left (CStr (PageNumber), Length (CStr (PageNumber)) - 3) +
" of " + Left (CStr (TotalPageCount), Length (CStr (TotalPageCount)) - 3)

الى هذا:

"Page " + CStr(PageNumber,0) + " of " + CStr(TotalPageCount,0)

لسوء الحظ ، ليس لدي أي فكرة عن (أي أو كل) من الإجراءات المذكورة أعلاه قد يحدد الخطأ. أقول "May" ، لأنه على كل ما أعرفه ، ذهب الخطأ بطريقة سحرية بسبب تغيير شبكة تكنولوجيا المعلومات.

أخيرًا ، هل قرأت هذه الورقة البيضاء؟ على الرغم من أنها لم تحل بالضرورة مشاكلنا ، إلا أنها كانت مثيرة للاهتمام للغاية.

إذا قمت بإنشاء غلاف خدمة نافذة لتطبيقك ، فهذا يعني أنه سيستمر في التشغيل بغض النظر عن المستخدمين الذين قاموا بتسجيل الدخول. يمكن أيضًا تعيينه للبدء تلقائيًا. أعتقد أنه نظرًا لأنك تستخدم تطبيقًا فعليًا ، وليس خدمة Windows ، فهي لا تعمل فعليًا بمجرد تسجيل الدخول لجلسة على الخادم.

فيما يلي مثال على مشروع الرمز:

http://www.codeproject.com/kb/system/windowsservice.aspx

هل أنت متأكد من أنك "تفصل" جلسة عن بُعد بدلاً من "تسجيل الخروج". أقوم بفصل جلساتي إلى خادم NT 2003 طوال الوقت وكل شيء يستمر في العمل بشكل جيد. التسجيل من ناحية أخرى سيقتل التطبيقات الجري في تلك الجلسة.

ما هو خادم O/S الخاص بك؟

من أجل حل المشكلة التي وصفتها ، تحتاج إلى التركيز على ماهية مشكلتك.

لقد تلقيت الرسالة: crystaldecisions.shared.crystalReportSexception: فشل تقرير التحميل عدة مرات ويرجع ذلك إلى حقيقة أنه لا يمكنك الوصول إلى التقرير. إما أنه غير موجود أو في موقفك ، فأنت غير متصل بالآلة. الخطأ لا يرجع إلى أي شيء مرتبط بالطباعة.

كان لدي مشكلة غامضة كانت مماثلة لهذا ، إلا أنها كانت مشكلة أتمتة (صدمة) مع Excel. لقد وجدت أن التطبيق يعمل بشكل جيد عندما يكون لديّ جلسة سطح المكتب عن بعد متصلة ، ولكن بمجرد فصلها ، فإنه يعطي أخطاء أتمتة تتعلق بالطابعة الافتراضية.

أعتقد أن المشكلة تتعلق بكيفية تعيين الطابعة الافتراضية عند الاتصال بسطح المكتب البعيد. على افتراض أن لديك ملف .rdp لبدء جلسة سطح المكتب عن بُعد ، إذا قمت بتحريره ، فحدد علامة التبويب "الموارد المحلية" ، يمكنك معرفة ما إذا كنت تشارك الطابعة المحلية في الجلسة البعيدة أم لا.

إذا تم تمكينه ، فهذا يعني عند الاتصال ، تصبح الطابعة الافتراضية المحلية الطابعة الافتراضية على الجهاز البعيد. عند قطع الاتصال ، ستظل الطابعة الافتراضية للتطبيق الخاصة بك قد تشير إلى الطابعة الافتراضية غير المتوفرة الآن من الجهاز المحلي الخاص بك.

يجب أن تكون قادرًا على حل هذا ، من خلال ضمان عدم مشاركة الطابعة المحلية ، من خلال إلغاء تحديد خانة اختيار الطابعة من علامة التبويب "الموارد المحلية".

سيكون الحل الأسهل هو تعطيل "إعادة توجيه الطابعة" على الخادم. نرى https://serverfault.com/questions/5646/how-do-i-disable-remote-printers-using-group-policy للمزيد من المعلومات.

إذا كنت تبحث بالتفصيل

أضف مربعات الاختيار إلى تقارير كريستال على feild منطقية وإذا كان الحقل المنطقي خطأ

قم بإلغاء تحديد آخر تحقق من مربع الاختيار نظرة على هذه المقالة

http://checkboxcrystalreport.blogspot.com/2009/07/printing-checkbox-in-crystal-report-for.html

بعد فترة طويلة ، وجدت هذا الرابط ولكن لم أحاول ، لا يوجد أي خادم مجاني آخر.

http://www.microsoft.com/technet/security/bulletin/ms04-017.mspx

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top