問題
專注于為中小企業(yè)提供網(wǎng)站制作、成都做網(wǎng)站服務,電腦端+手機端+微信端的三站合一,更高效的管理,為中小企業(yè)上栗免費做網(wǎng)站提供優(yōu)質(zhì)的服務。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動了上1000家企業(yè)的穩(wěn)健成長,幫助中小企業(yè)通過網(wǎng)站建設實現(xiàn)規(guī)模擴充和轉(zhuǎn)變。在沒有修改任何配置的情況下,這是用戶使用 Chrome 訪問不存在的URL時會看到的內(nèi)容:
幸運的是,處理錯誤狀態(tài)代碼非常簡單,我們將在下面介紹三種技術。
解決方案
在以前的ASP.NET MVC版本中,主要在 web.config 中處理404錯誤的。
您可能記得在
在.Net Core中,情況就不同了,沒有必要使用XML配置(盡管如果您是通過IIS代理,您仍然可以在web.config中使用 httpErrors,并且您真的想這樣嗎:-))。
在處理 not-found 錯誤時,我們需要處理兩種不同的情況。
URL與任何路由不匹配的情況。在這種情況下,如果我們無法確定用戶正在訪問什么,我們需要返回一個通用的未找到的頁面。有兩種常見的處理方法,但首先我們將討論第二種情況。URL與路由匹配的情況,但是一個或多個參數(shù)無效,我們可以用自定義視圖來解決這個問題。
自定義視圖
這種情況的一個例子是具有無效或過期ID的產(chǎn)品頁面。在這里,我們知道用戶正在查看產(chǎn)品,而不是返回通用錯誤,我們可以更友好的頁面,返回自定義未找到產(chǎn)品的的頁面。這仍然需要返回404狀態(tài)代碼,但是使用不通用的頁面,同時也可以向用戶顯示類似或受歡迎的產(chǎn)品。
處理這些情況是非?,嵥?,我們需要做的是在返回我們的自定義視圖之前設置狀態(tài)代碼:
public async TaskGetProduct(int id) { var viewModel = await _db.Get (id); if (viewModel == null) { Response.StatusCode = 404; return View("ProductNotFound"); } return View(viewModel); }