باستخدام العالمية (غبية) صفحة خطأ لجميع أخطاء ASP.NET MVC؟

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

سؤال

ولقد إعداد وتكوين ELMAH تسجيل كافة الأخطاء بلدي على مشروع ASP.NET MVC أعمل على. سيتم استخدامها من قبل مجموعة صغيرة من المستخدمين الذين لا يحتاجون لمعرفة الكثير جدا بحيث كلما كان هناك <م> أي نوع من الخطأ (404، InvalidOperation، Y2K ... أي شيء!) أريد فقط أن تبين لهم وجهة نظر الخطأ الافتراضية عام مع تعليمات للاتصال بمكتب المساعدة الخاص بنا والجلوس.

وELMAH هي قائمة وعاملة الغرامة التي سوف تستخدم موظفي مكتب المساعدة لتشخيص الأخطاء وتسجيل / رفع تذاكر الضرورة. مشكلتي هي في الحصول على صفحة الخطأ العالمية جهدي لتظهر. أنا باستخدام الحل نشر <لأ href = "http://danswatik.com/index.php/2009/04/23/how-to-get-elmah-to-work-with-aspnet-mvc-handleerror- السمة / "يختلط =" نوفولو noreferrer "> هنا لضمان ELMAH و[HandleError] لعب لطيف معا.

وتعيين الملف web.config على النحو بحيث:

<customErrors mode="On" />

إذا كنت الوصول HTTP: // التطبيق / الرئيسية / مؤشر التي لديها خطأ LINQ (تسلسل لا يحتوي على العناصر) ثم إنني أظهرت لي منظر جميل الخطأ، عام من /Shared/Error.aspx ولكن إذا كنت في محاولة للوصول إلى HTTP: / / التطبيق / وهمية / المكسور وهو 404 ثم أحصل على ASP.NET المعتاد

Server Error in '/' Application.
The resource cannot be found.
Description: HTTP 404. The resource you are looking for (or one of its dependencies) could have been removed, had its name changed, or is temporarily unavailable.  Please review the following URL and make sure that it is spelled correctly.

Requested URL: /Fake/Broken

والحصول على تسجيل كل من الأخطاء تماما من قبل ELMAH بالرغم من ذلك.

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

المحلول

إذا كنت تبحث فقط لاظهار صفحة خطأ عامة، ثم هل يمكن تحديد الصفحة نفسها:

<customErrors mode="On" defaultRedirect="error.htm" />

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

<customErrors mode="On">
  <error statusCode="404" redirect="notfound.htm"/>
</customErrors>

نصائح أخرى

وإذا كنت تستخدم IIS 7 قد تحتاج إلى إضافة هذا إلى الخاصة بك

<system.webServer>

مقطع في ملف التكوين

<httpErrors errorMode="Custom" existingResponse="PassThrough" />
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top