asp.net-mvc – 处理ASP.NET MVC中的路由错误

前端之家收集整理的这篇文章主要介绍了asp.net-mvc – 处理ASP.NET MVC中的路由错误前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我理解如何设置自己的路由,但是如何处理路由表中的路径呢?我的意思是,我猜默认的{controller} / {action} / {id}路由可能是一个通用的catchall,但我不确定这是否可行.我喜欢让我的用户知道他们已经请求了数据/不存在的“页面”.

这是[HandleError]过滤器的来源吗?这究竟是如何运作的?

解决方法

如果找不到您的路线,您希望将其作为正常的 HTTP 404错误处理.

如果只将[HandleError]属性添加到类或操作中,MVC将在视图文件夹中查找错误视图.

您还可以添加ErrorController甚至静态页面并将其添加到Web.config:

<customErrors mode="On" >
    <error statusCode="404" redirect="/Error/PageNotFound/" />
</customErrors>

或者您可以在Global.asax.cs中处理HTTP 404并以编程方式路由到ErrorController.这就是我通常这样做的方式:

protected void Application_Error(object sender,EventArgs e)
{
    var ex = Server.GetLastError().GetBaseException();

    var routeData = new RouteData();

    if (ex.GetType() == typeof(HttpException))
    {
        var httpException = (HttpException)ex;

        switch (httpException.GetHttpCode())
        {
            case 404:
                routeData.Values.Add("action","PageNotFound");
                break;
            default:
                routeData.Values.Add("action","GeneralError");
                break;
        }
    }
    else
    {
        routeData.Values.Add("action","GeneralError");
    }

    routeData.Values.Add("controller","Error");
    routeData.Values.Add("error",ex);

    IController errorController = new ErrorController();
    errorController.Execute(new RequestContext(new HttpContextWrapper(Context),routeData));
}
原文链接:https://www.f2er.com/aspnet/245805.html

猜你在找的asp.Net相关文章