2

在 ASP.net 3.5 和 MVC 1.0 中工作。

我想做的是在自定义错误页面中返回请求的 URL,这会生成 404 错误。就像谷歌在他们的错误页面上所做的一样(http://www.google.com/test)。

例如。

很抱歉,请求的地址“ http://www.domain.com/nonexistantpage.aspx ”在此服务器上不存在。

完成这种软 404 的最佳方法是什么?

另外,作为旁注:任何熟悉返回自定义错误页面来代替丑陋的 ...notfound?aspxerrorpath=/awdawd 废话,同时将请求的 URL 保留在浏览器的地址栏中的人?...我怀疑与 server.transfer 有什么关系?

4

1 回答 1

0

查看与此主题相关的这些资源:

总而言之,您可以通过定义一个执行特定控制器操作的包罗万象的路由来完成类似 google 的实现,同时保留请求的 URL。

//defined below all other routes
routes.MapRoute(
    "Catch All",
    "{*path}", 
    new { controller = "Error", action = "NotFound" }
);

public ActionResult NotFound(string path)
{
    Response.StatusCode = (int)HttpStatusCode.NotFound;
    ViewData["path"] = path; //or Request.Url.ToString() if you want full url
    return View();
}

不过,这不是一个完整的解决方案。假设您已离开默认路由映射,任何匹配{Controller}/{action}/{id}的内容仍会引发传统的 404 或自定义错误。如果您真的想让包罗万象的路线拾取任何未映射到特定控制器/动作或参数类型的东西,则必须明确定义所有可能的路线 - 不一定是一项微不足道的任务。

于 2009-11-25T15:57:45.170 回答