最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

在ASP.NET Core中顯示自定義的錯誤頁面

 更新時間:2016年12月09日 11:37:24   作者:dudu  
大家在用瀏覽器訪問服務(wù)器時,不同情況下會返回不同的信息。服務(wù)器發(fā)生錯誤就會返回錯誤信息,我們最熟悉的就是404錯誤頁面,但是這里我想和大家分享下在ASP.NET Core中如何顯示自定義的500或404錯誤頁面,有需要的朋友們可以參考借鑒,下面來一起看看吧。

前言

相信每位程序員們應(yīng)該都知道在 ASP.NET Core 中,默認(rèn)情況下當(dāng)發(fā)生500或404錯誤時,只返回http狀態(tài)碼,不返回任何內(nèi)容,頁面一片空白。

如果在 Startup.cs 的 Configure() 中加上 app.UseStatusCodePages(); ,500錯誤時依然是一片空白(不知為何對500錯誤不起作用),404錯誤時有所改觀,頁面會顯示下面的文字:

Status Code: 404; Not Found 

如果我們想實現(xiàn)不管500還是404錯誤都顯示自己定制的友好錯誤頁面,那該怎么辦呢?

對于500錯誤,我們可以用 app.UseExceptionHandler() 進(jìn)行截獲;

對于404錯誤,我們可以用 app.UseStatusCodePages() 的增強版 app.UseStatusCodePagesWithReExecute() 進(jìn)行截獲;

然后轉(zhuǎn)交給相應(yīng)的URL進(jìn)行處理。

app.UseExceptionHandler("/errors/500");
app.UseStatusCodePagesWithReExecute("/errors/{0}");

URL 路由到 MVC Controller 中顯示友好錯誤頁面。

public class ErrorsController : Controller
{
 [Route("errors/{statusCode}")]
 public IActionResult CustomError(int statusCode)
 {
  if(statusCode == 404)
  {
   return View("~/Views/Errors/404.cshtml");
  }
  return View("~/Views/Errors/500.cshtml");
 }  
}

【更新】

后來發(fā)現(xiàn)一個問題,當(dāng)出現(xiàn)底層異常時,自定義錯誤頁面不能顯示,還是一片空白,比如下面的異常:

System.DllNotFoundException: Unable to load DLL 'System.Security.Cryptography.Native.Apple': The specified module could not be found.
 (Exception from HRESULT: 0x8007007E)

這時想到用 MVC 顯示自定義錯誤頁面的局限,如果發(fā)生的異常導(dǎo)致 MVC 本身不能正常工作,自定義錯誤頁面就無法顯示。

于是針對這個問題進(jìn)行了改進(jìn),針對500錯誤直接用靜態(tài)文件的方式進(jìn)行響應(yīng),Startup.cs 的 Configure() 中的代碼如下:

app.UseExceptionHandler(errorApp =>
{
 errorApp.Run(async context =>
 {
  context.Response.StatusCode = 500;
  if (context.Request.Headers["X-Requested-With"] != "XMLHttpRequest")
  {
   context.Response.ContentType = "text/html";
   await context.Response.SendFileAsync($@"{env.WebRootPath}/errors/500.html");
  }
 });
});
app.UseStatusCodePagesWithReExecute("/errors/{0}");

為了重用自定義錯誤頁面,MVC Controller 中已進(jìn)行了修改:

public class ErrorsController : Controller
{
 private IHostingEnvironment _env;

 public ErrorsController(IHostingEnvironment env)
 {
  _env = env;
 }

 [Route("errors/{statusCode}")]
 public IActionResult CustomError(int statusCode)
 {
  var filePath = $"{_env.WebRootPath}/errors/{(statusCode == 404?404:500)}.html";
  return new PhysicalFileResult(filePath, new MediaTypeHeaderValue("text/html"));
 }  
}

總結(jié)

以上就是關(guān)于ASP.NET Core中顯示自定義錯誤頁面的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作能帶來一定的幫助,如果有疑問大家可以留言交流。

相關(guān)文章

  • 基于ASP.NET實現(xiàn)日期轉(zhuǎn)為大寫的漢字

    基于ASP.NET實現(xiàn)日期轉(zhuǎn)為大寫的漢字

    在寫代碼時遇到一個需要將日期轉(zhuǎn)換為中文大寫日期的問題,網(wǎng)上找了找,示例不是很多,只有javascript代碼的,下面整理下在ASP.NET中怎么實現(xiàn)。
    2016-08-08
  • 在.NET Web API設(shè)置響應(yīng)輸出Json數(shù)據(jù)格式常用的兩種方式詳解

    在.NET Web API設(shè)置響應(yīng)輸出Json數(shù)據(jù)格式常用的兩種方式詳解

    在ASP.NET Core Web API中設(shè)置響應(yīng)輸出Json數(shù)據(jù)格式常用以下兩種方式:可以通過添加System.Text.Json或Newtonsoft.JsonJSON序列化和反序列化庫在應(yīng)用程序中全局設(shè)置接口響應(yīng)的Json數(shù)據(jù)格式,本文示例使用的是新的Minimal API模式,感興趣的朋友跟隨小編一起看看吧
    2024-07-07
  • .Net使用Xunit工具進(jìn)行單元測試

    .Net使用Xunit工具進(jìn)行單元測試

    這篇文章介紹了.Net使用Xunit工具進(jìn)行單元測試的方法,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-06-06
  • 集合類List與Dictonary實例練習(xí)

    集合類List與Dictonary實例練習(xí)

    本文將詳細(xì)介紹下List<>泛型集合/Dictonary<>字典/泛型集合練習(xí) /中日期轉(zhuǎn)換提取為方法以及泛型集合練習(xí)之翻譯軟件,感興趣的你可不要錯過了哈
    2013-02-02
  • asp.net core配置文件加載過程的深入了解

    asp.net core配置文件加載過程的深入了解

    這篇文章主要給大家介紹了關(guān)于asp.net core配置文件加載過程的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-12-12
  • ASP.NET?Core?使用SignalR推送服務(wù)器日志的過程記錄

    ASP.NET?Core?使用SignalR推送服務(wù)器日志的過程記錄

    這篇文章主要介紹了ASP.NET?Core?使用SignalR推送服務(wù)器日志的相關(guān)知識,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2024-01-01
  • 3分鐘快速學(xué)會在ASP.NET Core MVC中如何使用Cookie

    3分鐘快速學(xué)會在ASP.NET Core MVC中如何使用Cookie

    這篇文章主要給大家介紹了關(guān)于如何通過3分鐘快速學(xué)會在ASP.NET Core MVC中使用Cookie的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用ASP.NET具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-12-12
  • asp.net javascript 文件無刷新上傳實例代碼

    asp.net javascript 文件無刷新上傳實例代碼

    最近在寫C# .net代碼的時候,遇到一個上傳刷新的問題。
    2009-06-06
  • .Net多線程編程(誤用點分析)

    .Net多線程編程(誤用點分析)

    本文主要介紹了.Net多線程編程中的誤用點分析。具有一定的參考價值,下面跟著小編一起來看下吧
    2017-01-01
  • asp.net下中文驗證碼,免費開源代碼

    asp.net下中文驗證碼,免費開源代碼

    asp.net下中文驗證碼,免費開源代碼...
    2007-04-04

最新評論

夏邑县| 永胜县| 昌图县| 定州市| 静海县| 高州市| 涞水县| 雷州市| 灵寿县| 绥滨县| 哈密市| 遂溪县| 雅安市| 南川市| 区。| 驻马店市| 哈尔滨市| 松溪县| 娱乐| 隆德县| 大城县| 焦作市| 化德县| 左贡县| 仁怀市| 朝阳市| 民和| 祥云县| 南投市| 望谟县| 沂南县| 马尔康县| 蒙城县| 翼城县| 噶尔县| 元氏县| 自治县| 桦南县| 德安县| 盐亭县| 乃东县|