我在Global.asax文件中编写了以下方法,如果我输入任何不适当的网址,我会将其重定向到默认控制器操作。
protected void Application_Error(object sender, EventArgs e)
{
Exception exception = Server.GetLastError();
Response.Clear();
HttpException httpException = exception as HttpException;
RouteData routeData = new RouteData();
if (httpException != null)
{
switch (httpException.GetHttpCode())
{
case 404:
routeData.Values.Add("controller", "Info");
routeData.Values.Add("action", "person");
Server.ClearError();
IController infoController = new InfoController();
infoController.Execute(new RequestContext(new HttpContextWrapper(Context), routeData));
break;
}
}
}
如果我输入的网址为http://localhost:2032/asjjsjdj
,则会将我重定向到person
控制器中的Info
操作,但会按原样显示网址。它还应将URL显示为http://localhost:2032/Info/person
。请让我知道我该怎么做。
答案 0 :(得分:0)
要更改浏览器中的网址,您可以使用Redirect但必须ClearError之前修改mvc以处理错误:
...
switch (httpException.GetHttpCode())
{
case 404:
HttpContext.Current.ClearError();
HttpContext.Current.Response.Redirect("/Home/Contact");
break;
}
...
答案 1 :(得分:0)
您必须将HTTP状态代码更改为3xx才能完全重定向,因此您可以通过Response.Redirect
switch (httpException.GetHttpCode())
{
case 404:
Server.ClearError();
Response.Redirect("~/home/about");
break;
}