كيف يجب عليك تشخيص الخطأ sehexception - مكون خارجي قد ألقى استثناء

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

سؤال

كلما ذكر المستخدم عن خطأ مثل

system.runtime.interopservices.sehexception. - الجزء الخارجي أحدث إستثناءا؟

هل هناك أي شيء يمكنني القيام به بمثابة مبرمج لتحديد السبب؟

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

من تتبع المكدس، كان الخطأ الفعلي عند إنشاء فئة لا تتصل مباشرة بأي رمز توزيع متعدد، ولكن ربما معقد بحقيقة أن الكائن قد يكون جزءا من قائمة مواد دوار إلى شبكة Devexpress.

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

لا يبدو أن الكمبيوتر المعني مجددا. إنه يعمل بنظام Vista Business، يحتوي على 2 جيجابايت من الذاكرة ووفقا لمدير المهام يستخدم فقط حوالي نصف ذلك مع تطبيقنا حوالي 200 ميجابايت فقط.

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

حاول قراءة أو كتابة الذاكرة المحمية. هذا غالبا ما يكون مؤشرا على أن الذاكرة الأخرى تالفة

يقول صناع المكونات أن هذا تم إصلاحه في أحدث إصدار من مكونه الذي نستخدمه في المنزل، لكن هذا لم يمنح للعميل بعد.

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

ولكن هل هناك أي شيء أكثر يمكنني القيام به؟

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

المحلول

نعم. هذا الخطأ هو استثناء منظم لم يتم تعيينه في خطأ .NET. ربما يكون رسم الخرائط DataGrid الخاص بك رمي استثناء أصلي لم يكن غير مؤمن.

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

نصائح أخرى

تلقيت مشكلة مماثلة مع SehException التي ألقيت عندما استخدم برنامجي لأول مرة غلاف DLL الأصلي. اتضح أن DLL الأصلي لهذا الغلاف كان مفقودا. كان الاستثناء بأي حال من الأحوال مفيدا في حل هذا. ما كانت المساعدة في النهاية كان تشغيل Procmon في الخلفية والتحقق مما إذا كانت هناك أي أخطاء عند تحميل جميع DLLs اللازمة.

إذا كنت تواجه مشكلة وصفها في هذا المنشور:

ASP.NET MVC Debugger رمي sehexception

ثم الحل هو:

إذا كان لديك أي تطبيق من Tucker (مثل علاقة أو أي شيء) قم بإلغاء تثبيت نظامك وإعادة تشغيله، فسوف يعمل بشكل جيد ... وجد هذا الحل هنا:

http://forums.asp.net/t/1704958.aspx/8/10؟re+sehexception3sthrownseher

يقول صناع المكونات أن هذا تم إصلاحه بأحدث إصدار من مكونه الذي نستخدمه في المنزل، ولكن تم منح هذا للعميل بعد.

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

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

فقط معلومات أخرى ... كانت هذه المشكلة اليوم في نظام Windows 2012 R2 X64 TS حيث بدأ التطبيق من مسار UNC / Network. حدثت المشكلة لتطبيق واحد لجميع مستخدمي الخادم الطرفي. تنفيذ التطبيق يعمل محليا دون مشاكل. بعد إعادة التشغيل بدأ العمل مرة أخرى - كانت شركة SehException's التي ألقيتها Initor INTION

تكوينات الجهاز الخاصة بي:

نظام التشغيل: Windows 10 الإصدار 1703 (x64)

واجهت هذا الخطأ أثناء تصحيح الأخطاء في مشروعي C # .NET في طبعة مجتمع Visual Studio 2017. كنت أسمي طريقة أصلية عن طريق أداء P / Invoke في مجموعة C ++ تحميلها في وقت التشغيل. واجهت نفس الخطأ الذي أبلغ عنه المرجع نفسه.

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

شيء واحد يجب ملاحظته هو أن الطريقة التي يتم الاحتجاج بها على التجمع C ++ كان من المفترض أن يكتب أشياء قليلة في التسجيل. لم أذهب تصحيح التعليمات البرمجية C ++ للقيام ببعض RCA، لكنني أرى احتمال أن يكون الشيء كله فشل عند امتيازات إدارية مطلوبة لكتابة التسجيل في نظام التشغيل Windows 10. لذلك في وقت سابق، عندما كان Visual Studio قيد التشغيل ضمن حساب مستخدم لم يكن لديه امتيازات إدارية على الجهاز، فإن المكالمات الأصلية كانت تفشل.

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