Cara membuat halaman kesalahan khusus berfungsi di ASP.NET MVC 4

247

Saya ingin halaman kesalahan khusus ditampilkan untuk 500, 404 dan 403. Inilah yang telah saya lakukan:

  1. Mengaktifkan kesalahan khusus di web.config sebagai berikut:

    <customErrors mode="On" 
                  defaultRedirect="~/Views/Shared/Error.cshtml">
    
        <error statusCode="403" 
               redirect="~/Views/Shared/UnauthorizedAccess.cshtml" />
    
        <error statusCode="404" 
               redirect="~/Views/Shared/FileNotFound.cshtml" />
    
    </customErrors>
  2. Terdaftar HandleErrorAttributesebagai filter tindakan global di FilterConfigkelas sebagai berikut:

    public static void RegisterGlobalFilters(GlobalFilterCollection filters)
    {
        filters.Add(new CustomHandleErrorAttribute());
        filters.Add(new AuthorizeAttribute());
    }
  3. Membuat halaman kesalahan khusus untuk masing-masing pesan di atas. Yang standar untuk 500 sudah tersedia di luar kotak.

  4. Dinyatakan dalam setiap tampilan halaman kesalahan kustom bahwa model untuk halaman tersebut System.Web.Mvc.HandleErrorInfo

Untuk 500, ini menunjukkan halaman kesalahan khusus. Bagi yang lain, tidak.

Apakah ada sesuatu yang saya lewatkan?

Memang terlihat seperti ini tidak semua ada untuk menampilkan kesalahan khusus ketika saya membaca kode dalam OnExceptionmetode HandleErrorAttributekelas dan hanya menangani 500.

Apa yang harus saya lakukan untuk menangani kesalahan lain?

Pendingin Air v2
sumber
21
Yang aneh dengan pengaturan ini adalah bahwa Anda mengarahkan ulang ke tampilan, bukan tindakan pengontrol. Siapa yang seharusnya merender pandangan-pandangan itu dan memberikan sebuah model, misalnya? Hanya berfikir.
Oliver
2
Sebagian besar jawaban di sini tidak menangani semua kasus atau menyebabkan server web merespons dengan cara yang "salah" yaitu mengarahkan ke halaman kesalahan daripada mengembalikan respons kesalahan. Jika Anda peduli tentang respons server dengan cara yang diharapkan dari server web, maka ada artikel yang cukup terperinci di sini: benfoster.io/blog/aspnet-mvc-custom-error-pages . Berhati-hatilah karena jawabannya tidak semudah jawaban di sini jadi jika Anda menginginkan jawaban yang mudah, gunakan salah satu saja di bawah ini.
rdans
1
Berikut ini adalah artikel hebat lainnya tentang berbagai teknik untuk penanganan kesalahan asp.net dusted.codes/…
Godsayah

Jawaban:

352

Pengaturan saya saat ini (pada MVC3, tapi saya pikir itu masih berlaku) bergantung pada memiliki ErrorController, jadi saya menggunakan:

<system.web>
    <customErrors mode="On" defaultRedirect="~/Error">
      <error redirect="~/Error/NotFound" statusCode="404" />
    </customErrors>
</system.web>

Dan controller berisi yang berikut ini:

public class ErrorController : Controller
{
    public ViewResult Index()
    {
        return View("Error");
    }
    public ViewResult NotFound()
    {
        Response.StatusCode = 404;  //you may want to set this to 200
        return View("NotFound");
    }
}

Dan pandangan seperti cara Anda menerapkannya. Saya cenderung menambahkan sedikit logika, untuk menunjukkan jejak stack dan informasi kesalahan jika aplikasi dalam mode debug. Jadi Error.cshtml terlihat seperti ini:

@model System.Web.Mvc.HandleErrorInfo
@{
    Layout = "_Layout.cshtml";
    ViewBag.Title = "Error";
}
<div class="list-header clearfix">
    <span>Error</span>
</div>
<div class="list-sfs-holder">
    <div class="alert alert-error">
        An unexpected error has occurred. Please contact the system administrator.
    </div>
    @if (Model != null && HttpContext.Current.IsDebuggingEnabled)
    {
        <div>
            <p>
                <b>Exception:</b> @Model.Exception.Message<br />
                <b>Controller:</b> @Model.ControllerName<br />
                <b>Action:</b> @Model.ActionName
            </p>
            <div style="overflow:scroll">
                <pre>
                    @Model.Exception.StackTrace
                </pre>
            </div>
        </div>
    }
</div>
Pablo Romeo
sumber
7
Apakah Anda harus memasukkan apa pun ke Application_Error di Global.asax Anda untuk Pablo ini?
Alicia
12
Kode di controller tampaknya tidak mengeksekusi dari pengalaman saya. MVC4 - melempar System.Exception di controller yang berbeda akan membuat file Error.cshtml di-render, tetapi tidak melalui ErrorController. Adakah yang mengalami ini?
Nilzor
53
Untuk siapa pun yang menganggap ini bermanfaat, tetapi membutuhkan lebih banyak konteks; Tag <customErrors> masuk ke dalam <system.web> di web.config.
gooberverse
7
Update untuk orang lain - tampaknya masalah saya yang terjadi karena saya punya redirectMode="ResponseRewrite"pada CustomerErrorselemen
KyleMit
42
Tolong karena cinta tuhan abaikan komentar yang tertulis //you may want to set this to 200dalam kode. JANGAN LAKUKAN ITU!
Demensik
40

Saya sudah melakukan solusi pablo dan saya selalu mengalami kesalahan (MVC4)

Tampilan 'Kesalahan' atau masternya tidak ditemukan atau mesin tampilan tidak mendukung lokasi yang dicari.

Untuk menghilangkan ini, hapus baris

 filters.Add(new HandleErrorAttribute());

di FilterConfig.cs

Machinegon
sumber
Saya mencari di mana-mana untuk menyelesaikan ini. Ini akhirnya memiliki jawabannya. Saya tahu mengapa itu melakukannya tetapi bagi saya, saya tidak bisa, tanpa berpikir secara drastis seperti apa yang dikatakan orang lain. Saya membayangkan saya merasakan sakit 360Airwalk ketika saya mengucapkan terima kasih karena menunjukkan ini. Legenda!
Adam
Ini adalah salah satu opsi dan Pengontrol kesalahan berfungsi dengan baik. Tapi sepertinya ketika Anda mendaftarkan filter di FilterConfig.cs, ia mencari Error.cshtml di folder tampilan pengendali asli dan bersama. Ketika Anda mengubah Error.cshtml ke hal lain selain itu, ErrorController kustom kami berfungsi. Tetapi ada tempat Anda dapat menambahkan pendaftaran ini dan itu adalah global.asax.cs. Jika Anda menambahkan baris yang disebutkan di fungsi RegisterGlobalFilters (GlobalFilterCollection) di global.asax.cs dan menghapus dari FilterConfig.cs, itu berfungsi.
isaolmez
Saya pikir ini terkait dengan urutan pendaftaran filter. Simpan pengontrol kesalahan dan pindahkan pendaftaran filter ke global.asax.cs. public static void RegisterGlobalFilters (filter GlobalFilterCollection) {filter.Add (HandleErrorAttribute ()) baru; }
isaolmez
24

Saya melakukan sesuatu yang membutuhkan pengkodean lebih sedikit daripada solusi lain yang diposting.

Pertama, di web.config saya, saya memiliki yang berikut:

<customErrors mode="On" defaultRedirect="~/ErrorPage/Oops">
   <error redirect="~/ErrorPage/Oops/404" statusCode="404" />
   <error redirect="~/ErrorPage/Oops/500" statusCode="500" />
</customErrors>

Dan controller (/Controllers/ErrorPageController.cs) berisi yang berikut ini:

public class ErrorPageController : Controller
{
    public ActionResult Oops(int id)
    {
        Response.StatusCode = id;

        return View();
    }
}

Dan akhirnya, tampilan berisi hal-hal berikut (dilucuti untuk kesederhanaan, tetapi dapat bertentangan:

@{ ViewBag.Title = "Oops! Error Encountered"; }

<section id="Page">
  <div class="col-xs-12 well">
    <table cellspacing="5" cellpadding="3" style="background-color:#fff;width:100%;" class="table-responsive">
      <tbody>
        <tr>
          <td valign="top" align="left" id="tableProps">
            <img width="25" height="33" src="~/Images/PageError.gif" id="pagerrorImg">
          </td>
          <td width="360" valign="middle" align="left" id="tableProps2">
            <h1 style="COLOR: black; FONT: 13pt/15pt verdana" id="errortype"><span id="errorText">@Response.Status</span></h1>
          </td>
        </tr>
        <tr>
          <td width="400" colspan="2" id="tablePropsWidth"><font style="COLOR: black; FONT: 8pt/11pt verdana">Possible causes:</font>
          </td>
        </tr>
        <tr>
          <td width="400" colspan="2" id="tablePropsWidth2">
            <font style="COLOR: black; FONT: 8pt/11pt verdana" id="LID1">
                            <hr>
                            <ul>
                                <li id="list1">
                                    <span class="infotext">
                                        <strong>Baptist explanation: </strong>There
                                        must be sin in your life. Everyone else opened it fine.<br>
                                    </span>
                                </li>
                                <li>
                                    <span class="infotext">
                                        <strong>Presbyterian explanation: </strong>It's
                                        not God's will for you to open this link.<br>
                                    </span>
                                </li>
                                <li>
                                    <span class="infotext">
                                        <strong> Word of Faith explanation:</strong>
                                        You lack the faith to open this link. Your negative words have prevented
                                        you from realizing this link's fulfillment.<br>
                                    </span>
                                </li>
                                <li>
                                    <span class="infotext">
                                        <strong>Charismatic explanation: </strong>Thou
                                        art loosed! Be commanded to OPEN!<br>
                                    </span>
                                </li>
                                <li>
                                    <span class="infotext">
                                        <strong>Unitarian explanation:</strong> All
                                        links are equal, so if this link doesn't work for you, feel free to
                                        experiment with other links that might bring you joy and fulfillment.<br>
                                    </span>
                                </li>
                                <li>
                                    <span class="infotext">
                                        <strong>Buddhist explanation:</strong> .........................<br>
                                    </span>
                                </li>
                                <li>
                                    <span class="infotext">
                                        <strong>Episcopalian explanation:</strong>
                                        Are you saying you have something against homosexuals?<br>
                                    </span>
                                </li>
                                <li>
                                    <span class="infotext">
                                        <strong>Christian Science explanation: </strong>There
                                        really is no link.<br>
                                    </span>
                                </li>
                                <li>
                                    <span class="infotext">
                                        <strong>Atheist explanation: </strong>The only
                                        reason you think this link exists is because you needed to invent it.<br>
                                    </span>
                                </li>
                                <li>
                                    <span class="infotext">
                                        <strong>Church counselor's explanation:</strong>
                                        And what did you feel when the link would not open?
                                    </span>
                                </li>
                            </ul>
                            <p>
                                <br>
                            </p>
                            <h2 style="font:8pt/11pt verdana; color:black" id="ietext">
                                <img width="16" height="16" align="top" src="~/Images/Search.gif">
                                HTTP @Response.StatusCode - @Response.StatusDescription <br>
                            </h2>
                        </font>
          </td>
        </tr>
      </tbody>
    </table>
  </div>
</section>

Sesederhana itu. Itu bisa dengan mudah diperluas untuk menawarkan info kesalahan yang lebih rinci, tetapi ELMAH menanganinya untuk saya & statusCode & statusDescription adalah semua yang biasanya saya butuhkan.

coderpro.net
sumber
Saya pikir pengalihan dalam file .config dari "~ / ErrorPage / Ups / 404" mungkin seharusnya "~ / ErrorPage / Ups? 404" kan? Setidaknya itulah yang berhasil bagi saya. Mungkin itu hanya tergantung pada routing.
Josh Sutterfield
Cara mensimulasikan kesalahan yang dilemparkan oleh IIS. Baik itu 500 atau 504. Apa yang harus dilakukan dalam ASP.Net MVC - 5 kode untuk mensimulasikan pengecualian dari IIS sehingga saya dapat menguji halaman kesalahan kustom saya
pecah
12

Tampaknya ada beberapa langkah di sini yang bercampur aduk. Saya akan mengedepankan apa yang saya lakukan dari awal.

  1. Buat ErrorPagepengontrol

    public class ErrorPageController : Controller
    {
        public ActionResult Index()
        {
            return View();
        }
    
        public ActionResult Oops(int id)
        {
            Response.StatusCode = id;
            return View();
        }
    }
  2. Tambahkan tampilan untuk dua tindakan ini (klik kanan -> Tambah Tampilan). Ini akan muncul di folder bernama ErrorPage.

  3. Di dalam App_Startmembuka FilterConfig.csdan berkomentar filter penanganan kesalahan.

    public static void RegisterGlobalFilters(GlobalFilterCollection filters)
    {
        // Remove this filter because we want to handle errors ourselves via the ErrorPage controller
        //filters.Add(new HandleErrorAttribute());
    }
  4. Di dalam web.config tambahkan <customerErrors>entri berikut , di bawahSystem.Web

    <customErrors mode="On" defaultRedirect="~/ErrorPage/Oops">
        <error redirect="~/ErrorPage/Oops/404" statusCode="404" />
        <error redirect="~/ErrorPage/Oops/500" statusCode="500" />
    </customErrors>
  5. Tes (tentu saja). Lempar pengecualian tidak tertangani dalam kode Anda dan lihat itu pergi ke halaman dengan id 500, dan kemudian gunakan URL ke halaman yang tidak ada untuk melihat 404.

VictorySaber
sumber
Saya mendapatkan kesalahan ini. An exception occurred while processing your request. Additionally, another exception occurred while executing the custom error page for the first exception. The request has been terminated.Semua yang saya ambil dari kode Anda ada di file web.config, saya menambahkan <error redirect = "~/ControllerName/ActionName" statusCode="404"/>dan berfungsi dengan baik :) Sisa kode berasal dari jawaban @ Pablo. Saya menggunakan MVC 5 dan kerangka kerja 6. Saya tidak menghapus filters.Add(new HandleErrorAttribute())dariFilterConfig.cs
sumedha
Cara mensimulasikan kesalahan yang dilemparkan oleh IIS. Baik itu 500 atau 504. Apa yang harus dilakukan dalam ASP.Net MVC - 5 kode untuk mensimulasikan pengecualian dari IIS sehingga saya dapat menguji halaman kesalahan kustom saya
pecah
Juga, cara melempar pengecualian yang tidak ditangani (langkah 5). Saya baru mengenal kode, mohon panduan.
Unbreakable
Masih tidak bekerja untuk saya? Bagaimana dengan perutean? Apakah saya perlu menambahkan halaman Routing for Error juga? Jika saya menekan halaman: localhost: 84 / Enforcer / bla saya diarahkan ke: localhost: 84 / Enforcer / Enforcer / Kesalahan / NotFound? Aspxerrorpath = / ... Halaman kesalahan terlihat seperti halaman kesalahan standar yang disediakan oleh Asp.NET. Ada ide?
Radek Strugalski
Elemen pelanggan dalam konfigurasi web harus mengatasi hal ini. Kode rute default Anda (dibuat oleh proyek) akan berfungsi dengan baik.
VictorySaber
11

Saya akan merekomendasikan untuk menggunakan File Global.asax.cs.

 protected void Application_Error(Object sender, EventArgs e)
{
    var exception = Server.GetLastError();
    if (exception is HttpUnhandledException)
    {
        Server.Transfer("~/Error.aspx");
    }
    if (exception != null)
    {
        Server.Transfer("~/Error.aspx");
    }
    try
    {
        // This is to stop a problem where we were seeing "gibberish" in the
        // chrome and firefox browsers
        HttpApplication app = sender as HttpApplication;
        app.Response.Filter = null;
    }
    catch
    {
    }
}
maxspan
sumber
1
Saya tidak berpikir Anda bisa melakukan Server.Transfer () di MVC. Apakah Anda berpikir OP memiliki situs campuran?
Rap
1
mengapa kita harus menggunakan Application_Error di mvc? Kami memiliki opsi seperti [handleerror] yang dikaitkan dengan opsi pengalihan url. Apakah ada keuntungan spesifik dengan application_error untuk itu?
Kurkula
Kita harus menggunakan HandleErrorAttribute dalam MVC dan dengan menimpa metode OnException, kita dapat menanganinya dengan cara yang jauh lebih baik
Kumar Lachhani
7

Membangun jawaban yang diposting oleh maxspan, saya telah mengumpulkan proyek sampel minimal di GitHub yang menunjukkan semua bagian yang berfungsi.

Pada dasarnya, kami hanya menambahkan Application_Errormetode ke global.asax.cs untuk mencegat pengecualian dan memberi kami kesempatan untuk mengalihkan (atau lebih tepatnya, permintaan transfer ) ke halaman kesalahan khusus.

    protected void Application_Error(Object sender, EventArgs e)
    {
        // See http://stackoverflow.com/questions/13905164/how-to-make-custom-error-pages-work-in-asp-net-mvc-4
        // for additional context on use of this technique

        var exception = Server.GetLastError();
        if (exception != null)
        {
            // This would be a good place to log any relevant details about the exception.
            // Since we are going to pass exception information to our error page via querystring,
            // it will only be practical to issue a short message. Further detail would have to be logged somewhere.

            // This will invoke our error page, passing the exception message via querystring parameter
            // Note that we chose to use Server.TransferRequest, which is only supported in IIS 7 and above.
            // As an alternative, Response.Redirect could be used instead.
            // Server.Transfer does not work (see https://support.microsoft.com/en-us/kb/320439 )
            Server.TransferRequest("~/Error?Message=" + exception.Message);
        }

    }

Pengontrol Kesalahan:

/// <summary>
/// This controller exists to provide the error page
/// </summary>
public class ErrorController : Controller
{
    /// <summary>
    /// This action represents the error page
    /// </summary>
    /// <param name="Message">Error message to be displayed (provided via querystring parameter - a design choice)</param>
    /// <returns></returns>
    public ActionResult Index(string Message)
    {
        // We choose to use the ViewBag to communicate the error message to the view
        ViewBag.Message = Message;
        return View();
    }

}

Tampilan halaman kesalahan:

<!DOCTYPE html>

<html>
<head>
    <title>Error</title>
</head>
<body>

    <h2>My Error</h2>
    <p>@ViewBag.Message</p>
</body>
</html>

Tidak ada lagi yang terlibat, selain menonaktifkan / menghapus filters.Add(new HandleErrorAttribute())di FilterConfig.cs

public class FilterConfig
{
    public static void RegisterGlobalFilters(GlobalFilterCollection filters)
    {
        //filters.Add(new HandleErrorAttribute()); // <== disable/remove
    }
}

Meskipun sangat sederhana untuk diterapkan, satu kelemahan yang saya lihat dalam pendekatan ini adalah menggunakan querystring untuk mengirimkan informasi pengecualian ke halaman kesalahan target.

pengguna3380909
sumber
3

Saya sudah mengatur semuanya, tetapi masih tidak bisa melihat halaman kesalahan yang tepat untuk kode status 500 di server pementasan kami, meskipun semuanya berjalan baik di server pengembangan lokal.

Saya menemukan posting blog ini dari Rick Strahl yang membantu saya.

Saya perlu menambahkan Response.TrySkipIisCustomErrors = true;kode penanganan kesalahan khusus saya.

DCShannon
sumber
@ Shaun314 Maksud Anda di mana Anda meletakkan kode itu? Dalam tindakan yang menangani permintaan. Anda dapat melihat contoh di posting blog itu.
DCShannon
2

Ini solusinya. Gunakan [ExportModelStateToTempData] / [ImportModelStateFromTempData] tidak nyaman menurut saya.

~ / Views / Home / Error.cshtml:

@{
    ViewBag.Title = "Error";
    Layout = "~/Views/Shared/_Layout.cshtml";
}

<h2>Error</h2>
<hr/>

<div style="min-height: 400px;">

    @Html.ValidationMessage("Error")

    <br />
    <br />

    <button onclick="Error_goBack()" class="k-button">Go Back</button>
    <script>
        function Error_goBack() {
            window.history.back()
        }
    </script>

</div>

~ / Controllers / HomeController.sc:

public class HomeController : BaseController
{
    public ActionResult Index()
    {
        return View();
    }

    public ActionResult Error()
    {
        return this.View();
    }

    ...
}

~ / Controllers / BaseController.sc:

public class BaseController : Controller
{
    public BaseController() { }

    protected override void OnActionExecuted(ActionExecutedContext filterContext)
    {
        if (filterContext.Result is ViewResult)
        {
            if (filterContext.Controller.TempData.ContainsKey("Error"))
            {
                var modelState = filterContext.Controller.TempData["Error"] as ModelState;
                filterContext.Controller.ViewData.ModelState.Merge(new ModelStateDictionary() { new KeyValuePair<string, ModelState>("Error", modelState) });
                filterContext.Controller.TempData.Remove("Error");
            }
        }
        if ((filterContext.Result is RedirectResult) || (filterContext.Result is RedirectToRouteResult))
        {
            if (filterContext.Controller.ViewData.ModelState.ContainsKey("Error"))
            {
                filterContext.Controller.TempData["Error"] = filterContext.Controller.ViewData.ModelState["Error"];
            }
        }

        base.OnActionExecuted(filterContext);
    }
}

~ / Controllers / MyController.sc:

public class MyController : BaseController
{
    public ActionResult Index()
    {
        return View();
    }

    public ActionResult Details(int id)
    {
        if (id != 5)
        {
            ModelState.AddModelError("Error", "Specified row does not exist.");
            return RedirectToAction("Error", "Home");
        }
        else
        {
            return View("Specified row exists.");
        }
    }
}

Saya berharap Anda berhasil proyek ;-)

MENGAKUI
sumber
2

Anda bisa mendapatkan kesalahan berfungsi dengan benar tanpa meretas global.cs, mengacaukan HandleErrorAttribute, melakukan Response.TrySkipIisCustomErrors, menghubungkan Application_Error, atau apa pun:

Di system.web (seperti biasa, hidup / mati)

<customErrors mode="On">
  <error redirect="/error/401" statusCode="401" />
  <error redirect="/error/500" statusCode="500" />
</customErrors>

dan di system.webServer

<httpErrors existingResponse="PassThrough" />

Sekarang semuanya harus berjalan seperti yang diharapkan, dan Anda dapat menggunakan ErrorController untuk menampilkan apa pun yang Anda butuhkan.

Robert Hoffmann
sumber
Cara mensimulasikan kesalahan yang dilemparkan oleh IIS. Baik itu 500 atau 504. Apa yang harus dilakukan dalam ASP.Net MVC - 5 kode untuk mensimulasikan pengecualian dari IIS sehingga saya dapat menguji halaman kesalahan kustom saya
pecah
@Unreakable mengubah sementara kode Anda untuk melempar pengecualian.
theycallmemorty
Tidak membuat perbedaan bagi saya. Saya tidak dibawa ke halaman kesalahan khusus saya atas pengecualian atau 404 tidak ditemukan kesalahan.
pnizzle
0

Sepertinya saya datang terlambat ke pesta, tetapi Anda harus memeriksa ini juga.

Jadi system.webuntuk caching pengecualian dalam aplikasi seperti return HttpNotFound ()

  <system.web>
    <customErrors mode="RemoteOnly">
      <error statusCode="404" redirect="/page-not-found" />
      <error statusCode="500" redirect="/internal-server-error" />
    </customErrors>
  </system.web>

dan system.webServeruntuk menangkap kesalahan yang ditangkap oleh IIS dan tidak membuat jalan mereka ke kerangka asp.net

 <system.webServer>
    <httpErrors errorMode="DetailedLocalOnly">
      <remove statusCode="404"/>
      <error statusCode="404" path="/page-not-found" responseMode="Redirect"/>
      <remove statusCode="500"/>
      <error statusCode="500" path="/internal-server-error" responseMode="Redirect"/>
  </system.webServer>

Di yang terakhir jika Anda khawatir tentang respons klien kemudian ubah responseMode="Redirect"to responseMode="File"dan sajikan file html statis, karena yang ini akan menampilkan halaman ramah dengan 200 kode respons.

OrElse
sumber
0

Di web.config tambahkan ini di bawah tag system.webserver seperti di bawah ini,

<system.webServer>
<httpErrors errorMode="Custom" existingResponse="Replace">
  <remove statusCode="404"/>
  <remove statusCode="500"/>
  <error statusCode="404" responseMode="ExecuteURL" path="/Error/NotFound"/>
  <error statusCode="500" responseMode="ExecuteURL"path="/Error/ErrorPage"/>
</httpErrors>

dan tambahkan pengontrol sebagai,

public class ErrorController : Controller
{
    //
    // GET: /Error/
    [GET("/Error/NotFound")]
    public ActionResult NotFound()
    {
        Response.StatusCode = 404;

        return View();
    }

    [GET("/Error/ErrorPage")]
    public ActionResult ErrorPage()
    {
        Response.StatusCode = 500;

        return View();
    }
}

dan menambahkan pandangan mereka yang dihormati, ini pasti akan berhasil kurasa untuk semua.

Solusi ini saya temukan dari: Neptunus Century

Dpk-Kumar
sumber