要在ASP.NET MVC中将用户重定向到自定义的404页面而不是抛出异常,您可以遵循以下步骤:
首先,您需要创建一个自定义的404页面。您可以在项目的Views/Shared
文件夹中创建一个名为Error.cshtml
的视图。在这个视图中,您可以添加自定义的错误消息和样式。
接下来,您需要创建一个自定义错误过滤器,该过滤器将捕获404错误并将用户重定向到自定义的404页面。在项目中创建一个名为CustomErrorFilterAttribute.cs
的新类,并继承自HandleErrorAttribute
类。然后,重写OnException
方法以处理404错误。
using System.Web.Mvc;
public class CustomErrorFilterAttribute : HandleErrorAttribute
{
public override void OnException(ExceptionContext filterContext)
{
if (filterContext.Exception is HttpException && ((HttpException)filterContext.Exception).GetHttpCode() == 404)
{
filterContext.Result = new ViewResult
{
ViewName = "Error"
};
filterContext.ExceptionHandled = true;
filterContext.HttpContext.Response.Clear();
filterContext.HttpContext.Response.StatusCode = 404;
}
else
{
base.OnException(filterContext);
}
}
}
最后,您需要在全局过滤器中注册自定义错误过滤器。在Global.asax.cs
文件中,将以下代码添加到Application_Start
方法中:
GlobalFilters.Filters.Add(new CustomErrorFilterAttribute());
现在,当用户尝试访问不存在的页面时,他们将被重定向到自定义的404页面,而不是抛出异常。
这个方法避免了使用亚马逊AWS、Azure、阿里云、华为云、天翼云、GoDaddy、Namecheap、Google等流行的一些云计算品牌商,并且可以在ASP.NET MVC中实现自定义404页面的重定向。
领取专属 10元无门槛券
手把手带您无忧上云