gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 10:44:39 27 4
gpt4 key购买 nike

我了解如何设置自己的路由,但是如何处理路由表裂缝中的路由?我的意思是,我猜默认 {controller}/{action}/{id}路线可能是一个通用的笼统,但我不确定这是否是要走的路。我喜欢让我的用户知道他们请求了不存在的数据/“页面”。

这是哪里[HandleError]过滤器进来了?这到底是怎么工作的?

最佳答案

如果没有找到你的路由,你想把它当作正常处理 HTTP 404错误。

如果您只添加 [HandleError]属性到您的类或操作,MVC 将查找 Error在您的 View 文件夹中查看。

您还可以添加 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));
}

关于asp.net-mvc - 处理 ASP.NET MVC 中的路由错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4832906/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com