Pertanyaan Tampilan 'Kesalahan' atau masternya tidak ditemukan


Saya telah menghabiskan banyak waktu untuk mencoba mencari solusi untuk ini tidak ada gunanya, jadi saya pikir saya akan melihat apakah ada orang di sini yang memiliki ide.

saya menggunakan Elmah dalam aplikasi ASP.NET MVC3 saya. Saya menggunakan kode yang sama persis dari jawaban yang diterima di tautan sebelumnya.

Saya juga memiliki kode ini di Global.asax saya untuk menampilkan halaman kesalahan dengan respons HTTP yang benar:

    /// <summary>
    /// The customErrors functionality provided by ASP.NET results in HTTP 302 redirects occurring which doesn't accurately reflect what the real HTTP code of the response was.
    /// This method can be used to handle specific HTTP codes without an intermediate redirect.
    /// </summary>
    protected void Application_Error() {
        var exception = Server.GetLastError();
        var httpException = exception as HttpException;
        Response.Clear();
        Server.ClearError();
        var routeData = new RouteData();
        routeData.Values["controller"] = "Error";
        routeData.Values["action"] = "Error500";
        Response.StatusCode = 500;

        if (httpException != null) {
            Response.StatusCode = httpException.GetHttpCode();
            Response.TrySkipIisCustomErrors = true;
            switch (Response.StatusCode) {
                case 403:
                    routeData.Values["action"] = "Error403";
                    break;
                case 404:
                    routeData.Values["action"] = "Error404";
                    routeData.Values["message"] = httpException.Message;
                    break;
                case 500:
                    routeData.Values["action"] = "Error500";
                    break;
            }
        }

        IController errorsController = new ErrorController();
        var rc = new RequestContext(new HttpContextWrapper(Context), routeData);
        errorsController.Execute(rc);
    }

Masalahnya terjadi ketika saya tidak pada mesin pengembangan (lokal) saya (yang awalnya membuat saya berpikir itu customErrors terkait). Ketika pengecualian dilemparkan, Elmah menangani kesalahan dan mencatatnya dengan benar. Saya juga berakhir pada halaman kesalahan yang benar. Namun, sebelum berakhir pada halaman kesalahan yang benar, saya dapat melihat pengecualian antara sedang dicatat:

The view 'Error' or its master was not found or no view engine supports the searched locations. The following locations were searched: ~/Views/Articles/Error.aspx ~/Views/Articles/Error.ascx ~/Views/Shared/Error.aspx ~/Views/Shared/Error.ascx ~/Views/Articles/Error.cshtml ~/Views/Articles/Error.vbhtml ~/Views/Shared/Error.cshtml ~/Views/Shared/Error.vbhtml

ASP.NET sedang mencoba untuk memuat halaman kesalahan standar meskipun saya mencoba untuk menanganinya. Adakah yang punya ide tentang cara mencegah hal ini?


32
2018-04-17 21:20


asal


Jawaban:


Jangan panggil base.OnException(context); metode di handler kesalahan kustom Anda yang berasal dari HandleErrorAttribute. Anda tidak lagi membutuhkannya karena Anda telah menerapkan penanganan kesalahan khusus di Application_Error.


28
2018-04-18 06:25



Saya mengalami masalah yang sama ini, tetapi saya tidak mengeksekusi base.OnException () di mana saja. Solusi lain yang mungkin adalah untuk menghapus ini dari <system.web> di web.config saya:

<customErrors mode="On" />

12
2017-10-01 16:07



Di suatu tempat situs Anda mencoba untuk menavigasi ke ~ / Error dan tidak dapat menemukannya karena tidak ada.

Mencoba menghapus atau menonaktifkan customErrors di Web.config Anda. Saya bersedia untuk mengaturnya ke default di dan mengalihkan ke ~ / Galat

Jika Anda ingin memposting Web.config Anda (menghilangkan informasi sensitif apa pun), saya mungkin bisa membantu. Saya sudah berurusan dengan masalah yang sama dengan Elmah baru-baru ini.


2
2018-04-17 21:39



Jika Anda menggunakan Elmah.MVC dan ingin menggunakan halaman kesalahan khusus, cukup ubah nilai di bawah menjadi true di Web.config Anda:

<add key="elmah.mvc.disableHandleErrorFilter" value="true" />

Ini akan membuat Elmah tetap aktif tetapi menghentikannya untuk mencoba mengalihkan ke halaman kesalahan default.


1
2018-04-13 18:32



Jika Anda menggunakan Elmah.mvc, maka itu akan membantu mengubah pengaturan ini menjadi true:

<add key="elmah.mvc.disableHandler" value="true" />
<add key="elmah.mvc.disableHandleErrorFilter" value="true" />

0
2018-01-11 11:26