سؤال

لقد كنت أتطلع حول بعض الأساليب لاستخدام ELMAH مع ASP.NET MVC حتى أتمكن من استخدام صفحة الخطأ المخصصة لجميع الاستثناءات بما في ذلك 404s.

هنالك لا نقص من أسئلة يسأل كيفية الحصول على /shared/error.aspx العمل بشكل صحيح في ASP.NET MVC - إما مع أو بدون إلمه. ليس لدي مشكلة في هذه المهمة، لكنني أشعر كما لو أن حلاي لاستخدام صفحة مخصصة 404 جنبا إلى جنب مع إيماه كان بسيطا للغاية ولا أستطيع هز الشعور بأنه يجب أن يكون هناك المزيد.

بعد تمكين CustomErrors في Web.config، قمت بإنشاء إجراء جديد في بلدي HomeController:

public ActionResult PageNotFound()
{
    return null;
}

من هناك، أضفت طريقة جديدة في ملف Global.asax الخاص بي للاستفادة من إمكانيات تصفية سجل ELMAH، بعد السماح باستثناء تسجيل الدخول، إعادة توجيه الاستجابة مرة أخرى إلى المذكورة أعلاه PageNotFound ActionResult:

    public void errorLog_Filtering(object sender, ExceptionFilterEventArgs e)
    {
        if (e.Exception.GetType().Equals(typeof(HttpException)))
        {
            HttpException ex = (HttpException)e.Exception;
            if (ex.GetHttpCode() == 404)
                Response.Redirect("/Home/PageNotFound");
        }
    }

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

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

المحلول

أنا متأكد من أن ASP.NET يمكن أن تتعامل مع هذا النوع من الأشياء بالنسبة لك، لا يتعين عليك بالضرورة استدعاء أي شيء للإعادة التوجيه إلى عمل 404 الخاص بك داخل Global.asax. إنظر في الأسفل للمثال.

<configuration>
    <system.web>
        <customErrors mode="On">
            <error statusCode="404" redirect="/servererrors/404.aspx" />
        </customErrors>
    </system.web>
</configuration>

http://www.xefteri.com/articles/show.cfm؟id=11.

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