对于未路由到的URL,可以如下处理。
1:首先,准备控制器
public
class
ErrorController : Controller
{
public
ActionResult Index(
string
error)
{
ViewData[
"Title"
] =
"WebSite 网站内部错误"
;
ViewData[
"Description"
] = error;
return
View(
"Index"
);
//全部路由到Error下的Index视图
}
public
ActionResult HttpError404(
string
error)
{
ViewData[
"Title"
] =
"HTTP 404- 无法找到文件"
;
ViewData[
"Description"
] = error;
return
View(
"Index"
);
}
public
ActionResult HttpError500(
string
error)
{
ViewData[
"Title"
] =
"HTTP 500 - 内部服务器错误"
;
ViewData[
"Description"
] = error;
return
View(
"Index"
);
}
public
ActionResult General(
string
error)
{
ViewData[
"Title"
] =
"HTTP 发生错误"
;
ViewData[
"Description"
] = error;
return
View(
"Index"
);
}
}
|
2:Error下的Index视图
代码:
3:在Global.aspx中进行处理
添加如下方法:
protected
void
Application_Error(
object
sender, EventArgs e)
{
Response.Clear();
Exception exception = Server.GetLastError();
HttpException httpException = exception
as
HttpException;
RouteData routeData =
new
RouteData();
routeData.Values.Add(
"controller"
,
"Error"
);
if
(exception ==
null
)
{
routeData.Values.Add(
"action"
,
"Index"
);
}
else
if
(httpException ==
null
)
{
routeData.Values.Add(
"action"
,
"Index"
);
}
else
{
switch
(httpException.GetHttpCode())
{
case
404:
routeData.Values.Add(
"action"
,
"HttpError404"
);
break
;
case
500:
routeData.Values.Add(
"action"
,
"HttpError500"
);
break
;
default
:
routeData.Values.Add(
"action"
,
"General"
);
break
;
}
}
// Pass exception details to the target error View.
routeData.Values.Add(
"error"
, exception.Message);
// Clear the error on server.
Server.ClearError();
// Call target Controller and pass the routeData.
IController errorController =
new
ErrorController();
errorController.Execute(
new
RequestContext(
new
HttpContextWrapper(Context), routeData));
} 本文转自最课程陆敏技博客园博客,原文链接:http://www.cnblogs.com/luminji/archive/2011/07/31/2122533.html,如需转载请自行联系原作者
|