asp.net-mvc – ASP.NET MVC 5自定义错误页面
发布时间:2020-05-27 22:31:52 所属栏目:asp.Net 来源:互联网
导读:我在ASP.NET MVC 5应用程序中使用自定义授权属性,如下所示: public class CustomAuthorizeAttribute : AuthorizeAttribute{ protected override void HandleUnauthorizedRequest(AuthorizationContext context) { if (c
|
我在ASP.NET MVC 5应用程序中使用自定义授权属性,如下所示: public class CustomAuthorizeAttribute : AuthorizeAttribute
{
protected override void HandleUnauthorizedRequest(AuthorizationContext context)
{
if (context.HttpContext.Request.IsAuthenticated)
{
context.Result = new System.Web.Mvc.HttpStatusCodeResult((int)System.Net.HttpStatusCode.Forbidden);
}
else
{
base.HandleUnauthorizedRequest(context);
}
}
}
在我的web.config的system.web部分我提到了错误路径,如: <system.web>
<customErrors mode="On" defaultRedirect="/Error/Error">
<error statusCode="403" redirect="/Error/NoPermissions"/>
</customErrors>
</system.web>
但是我从未重定向到/ Error / NoPermissions的自定义错误页面。相反,浏览器会显示“HTTP错误403.0 – 禁止”的常规错误页面。 解决方法[1]:删除所有’customErrors’&来自Web.config的’httpErrors’[2]:检查’App_Start / FilterConfig.cs’如下所示: public class FilterConfig
{
public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
filters.Add(new HandleErrorAttribute());
}
}
[3]:在“Global.asax”中添加此方法: public void Application_Error(Object sender,EventArgs e)
{
Exception exception = Server.GetLastError();
Server.ClearError();
var routeData = new RouteData();
routeData.Values.Add("controller","ErrorPage");
routeData.Values.Add("action","Error");
routeData.Values.Add("exception",exception);
if (exception.GetType() == typeof(HttpException))
{
routeData.Values.Add("statusCode",((HttpException)exception).GetHttpCode());
}
else
{
routeData.Values.Add("statusCode",500);
}
Response.TrySkipIisCustomErrors = true;
IController controller = new ErrorPageController();
controller.Execute(new RequestContext(new HttpContextWrapper(Context),routeData));
Response.End();
}
[4]:添加“控制器/ ErrorPageController.cs” public class ErrorPageController : Controller
{
public ActionResult Error(int statusCode,Exception exception)
{
Response.StatusCode = statusCode;
ViewBag.StatusCode = statusCode + " Error";
return View();
}
}
[5]:在“Views / Shared / Error.cshtml” @model System.Web.Mvc.HandleErrorInfo
@{
ViewBag.Title = (!String.IsNullOrEmpty(ViewBag.StatusCode)) ? ViewBag.StatusCode : "500 Error";
}
<h1 class="error">@(!String.IsNullOrEmpty(ViewBag.StatusCode) ? ViewBag.StatusCode : "500 Error"):</h1>
//@Model.ActionName
//@Model.ControllerName
//@Model.Exception.Message
//@Model.Exception.StackTrace
:D (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- asp.net – ‘Owin.IAppBuilder’不包含’MapSignalR’的定
- asp.net-web-api – 从asp.net web api定制odata输出
- ASP.NET自定义错误页面HTTP响应
- asp.net-core – 如何在ASP.NET 5中使用“旧”依赖项
- asp.net-mvc-3 – 是否可以在Javascript文件中使用razor语法
- asp.net – OnClientClick中的服务器标记
- 使用asp.net渲染无序列表
- asp.net-web-api – 什么时候使用HttpMessageHandler vs Ac
- asp.net – 正在生成无效的Webresource.axd参数
- asp.net-mvc – 将一个属性与另一个属性进行比较的MVC数据注
推荐文章
站长推荐
- asp.net-web-api – 无法识别Web Api [可查询]属
- asp.net-mvc – 没有值的asp.net mvc htmlattrib
- ef-code-first – 如何通过使用Identity ASP.NET
- 从ASP.NET MVC返回null时,jQuery post JSON失败
- asp.net-mvc – MVC2 Binding不适用于Html.DropD
- asp.net MVC的Html.RadioButton生成id和名称相同
- ASP.NET:Response.Redirect(…)后的代码会发生什
- 用于Asp.Net应用程序的SSO的最佳方法,从具有多个
- asp.net-core – 什么应该是WEB API Action Meth
- asp.net – 获取当前用户的GUID?
热点阅读
