Asp.net 如果发现错误路由,是否跳转到404错误页面?

Asp.net 如果发现错误路由,是否跳转到404错误页面?,asp.net,webforms,url-routing,Asp.net,Webforms,Url Routing,我使用ASP.Net URL路由进行搜索引擎优化,当我遇到一个不好的路由名(即/Games/{routename})时,我想把它传递到我的404页面进行处理。我检查数据库以确保{RouteName}是游戏的有效名称。如果RouteName是有效的,我想继续正常处理,但如果DB返回并且没有找到相应的RouteName,我想知道服务器是如何工作的,就像输入了一个真正糟糕的URL一样。如何才能最好地完成此任务?我建议在逻辑中抛出一个404错误,确定它无效,例如: if (!<validRoute

我使用ASP.Net URL路由进行搜索引擎优化,当我遇到一个不好的路由名(即/Games/{routename})时,我想把它传递到我的404页面进行处理。我检查数据库以确保{RouteName}是游戏的有效名称。如果RouteName是有效的,我想继续正常处理,但如果DB返回并且没有找到相应的RouteName,我想知道服务器是如何工作的,就像输入了一个真正糟糕的URL一样。如何才能最好地完成此任务?

我建议在逻辑中抛出一个404错误,确定它无效,例如:

if (!<validRouteName>) {
   return new HttpStatusCodeResult(404, "Game not found.");
}
if(!){
返回新的HttpStatusCodeResult(404,“未找到游戏”);
}

在IIS中做了一些乱七八糟的事情,我已经弄明白了这一点。正如endyourif建议的那样,我需要在我的代码中抛出一个404 resposne,这是由Response.StatusCode=404;我还必须为404配置IIS的错误页面,以指向我的404.aspx页面。

HttpStatusCodeResult是一个MVC代码,我能想到的唯一等效代码是Response.StatusCode=404。这部分工作,它确实导致了404,但它是由默认的IIS 404处理,而不是我的自定义404。有没有办法让我的自定义404页面来处理它?我的Global.asax文件中有一个代码块,应该捕获404并将其传递给我的自定义404受保护的无效应用程序。\u错误(对象发送方,EventArgs e){Exception Exception=Server.GetLastError();if(Exception是HttpException){if((HttpException)Exception.GetHttpCode()==404){Server.ClearError();Server.Transfer(“~/404.aspx”,false);return;}}}}}而不是Response.StatusCode您能抛出HttpException吗?正如您的代码所期望的那样——或者——您也可以更新代码以检查response.statuscode。