Asp.net-Mvc
ASP.NET MVC 5 - (HTTP 錯誤 404.0 - 未找到)具有長的不存在的 URL
我在 Microsoft Visual Studio Express 2013 for Web 中創建了一個新項目。它是一個 ASP.NET MVC 5 - .NET Framework 4.5 項目。
我想處理(找不到資源):
我確實使用下面的程式碼處理了它。
如果我執行 (/Home/kddiede/ddiij) 或 (/djdied/djie/djs) 之類的操作,此程式碼將起作用,這將導致顯示我的自定義錯誤頁面。
但是,當我嘗試執行類似 (/Home/kddiede/ddiij/dfd/sdfds/dsf/dsfds/fd) 或任何長的不存在的 URL 時,它會告訴我:
程式碼來自: http: //www.codeproject.com/Articles/635324/Another-set-of-ASP-NET-MVC-4-tips
技巧 16:自定義錯誤螢幕
錯誤頁面位於 /View/Shared/Error.cshtml
網頁配置
<system.web> <customErrors mode="RemoteOnly" /> </system.web>全球.asax
protected void Application_EndRequest(Object sender, EventArgs e) { ErrorConfig.Handle(Context); }錯誤配置類
public class ErrorConfig { public static void Handle(HttpContext context) { switch (context.Response.StatusCode) { //Not authorized case 401: Show(context, 401); break; //Not found case 404: Show(context, 404); break; } } static void Show(HttpContext context, Int32 code) { context.Response.Clear(); var w = new HttpContextWrapper(context); var c = new ErrorController() as IController; var rd = new RouteData(); rd.Values["controller"] = "Error"; rd.Values["action"] = "Index"; rd.Values["id"] = code.ToString(); c.Execute(new RequestContext(w, rd)); } }錯誤控制器
internal class ErrorController : Controller { [HttpGet] public ViewResult Index(Int32? id) { var statusCode = id.HasValue ? id.Value : 500; var error = new HandleErrorInfo(new Exception("An exception with error " + statusCode + " occurred!"), "Error", "Index"); return View("Error", error); } }我上面提到的網站的最後一段程式碼沒有添加到 Global.asax 中,因為它已經在 FilterConfig.cs 中
public static void RegisterGlobalFilters(GlobalFilterCollection filters) { filters.Add(new HandleErrorAttribute()); }任何人都知道如何解決它?
提前致謝。
解決了。要將所有不存在的 url 指向您的錯誤頁面,請執行以下操作:
- 在 RouteConfig.cs 文件的末尾添加以下程式碼:
public static void RegisterRoutes(RouteCollection routes) { // Default routes.MapRoute( name: "Default", url: "{controller}/{action}/{id}", defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } ); // Add this code to handle non-existing urls routes.MapRoute( name: "404-PageNotFound", // This will handle any non-existing urls url: "{*url}", // "Shared" is the name of your error controller, and "Error" is the action/page // that handles all your custom errors defaults: new { controller = "Shared", action = "Error" } ); }
- 將以下程式碼添加到您的 Web.config 文件中:
<configuration> <system.webServer> <modules runAllManagedModulesForAllRequests="true"></modules> </system.webServer> <system.web> <httpRuntime relaxedUrlToFileSystemMapping="true" /> </system.web> </configuration>這應該將所有不存在的網址(例如 (/ad/asd/sa/das,d/asd,asd.asd+dpwd’=12=2e-21) )指向您的錯誤頁面。

