asp.net-mvc – ASP.NET MVC区域可以显示自己的错误页面集吗?
|
我一直在将我的一些Web应用程序整合到一个主要的ASP.NET MVC项目中;将其中一些分配给不同的区域,以便可以通过子域访问它们. 使用这个(非常有用的)资源(https://dusted.codes/demystifying-aspnet-mvc-5-error-pages-and-error-logging),我在Web.config中设置了customErrors和httpErrors,以便显示自定义错误页面.效果很好. 我将在Area / subdomain中使用不同的布局/样式,所以我想知道: 使用当前设置,所有子域都将显示添加到customErrors和httpErrors部分的主要自定义错误集(403.html,404.html等);但我更喜欢某些子域的定制错误页面. (例如,如果其中一个区域完全由一个单独的域处理,那么提供常规错误页面是不切实际的.) 更新: <system.web>
<customErrors mode="On" redirectMode="ResponseRewrite" defaultRedirect="~/500.aspx">
<error statusCode="404" redirect="~/404.aspx" />
<error statusCode="500" redirect="~/500.aspx" />
</customErrors>
</system.web>
<location path="MyArea1">
<system.web>
<customErrors mode="On" redirectMode="ResponseRewrite" defaultRedirect="~/Areas/MyArea1/500.aspx">
<error statusCode="404" redirect="~/Areas/MyArea1/404.aspx" />
<error statusCode="500" redirect="~/Areas/MyArea1/500.aspx" />
</customErrors>
</system.web>
</location>
<location path="MyArea2">
<system.web>
<customErrors mode="On" redirectMode="ResponseRewrite" defaultRedirect="~/Areas/MyArea2/500.aspx">
<error statusCode="404" redirect="~/Areas/MyArea2/404.aspx" />
<error statusCode="500" redirect="~/Areas/MyArea2/500.aspx" />
</customErrors>
</system.web>
</location>
上面的代码效果很好: >如果我导航到“example.com/does/not/exist”,我会得到 挑战: 现在我想要一个区域(MyArea2)由一个完全独立的域(例如exampleOnMyOtherDomain.com)服务,使用HostDomainConstraint(由@TetsuyaYamamoto推荐,在下面的评论中).现在将以这种方式访问可通过“example.com/MyArea2/validlink”访问的链接:“exampleOnMyOtherDomain.com/validlink”. 现在,如果我尝试“exampleOnMyOtherDomain.com/does/not/exist”,我将获得顶级404(/ 404.aspx).这可能是因为“MyArea2”不再位于路径中,因此将不会拾取路径为“MyArea2”的位置. 如何让Area(MyArea2)提供自己的错误页面? 解决方法根据@TetsuyaYamamoto的一些研究和有用的指示,我采用了以下策略.我正在使用以下代码处理Global.asax中的“Application_Error”事件: protected void Application_Error(object sender,EventArgs e)
{
string hostName = Request.Headers["host"].Split(':')[0];
if (hostName.Contains("exampleOnMyOtherDomain"))
{
Exception exception = Server.GetLastError();
Response.Clear();
HttpException httpException = exception as HttpException;
Response.TrySkipIisCustomErrors = true;
switch (httpException.GetHttpCode())
{
case 404:
Response.StatusCode = 404;
Server.Transfer("~/Errors/MyArea2_404.htm");
break;
case 500:
default:
Response.StatusCode = 500;
Server.Transfer("~/Errors/MyArea2_500.htm");
break;
}
Server.ClearError();
}
}
注意事项: > hostName.Contains(“exampleOnMyOtherDomain”)应该将主机名与我感兴趣的区域进行比较.我将添加其他区域的if语句; 我希望customErrors / httpErrors继续处理常规错误.当执行通过Application_Error块而不进行处理(即未调用Server.ClearError())时,customErrors / httpErrors将处理错误. 对于处理由不同域服务的区域的错误,这似乎是一个不错的策略. (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- 如何在ASP.NET全球化中配置不变文化?
- asp.net – 替换过时的System.Xml.XmlDataDocument?
- asp.net – mvc大写模型与小写模型
- asp.net-mvc – 使用数据注释进行自定义验证
- asp.net-mvc – Html.DisplayFor十进制格式?
- asp.net-mvc – 使用JSON,JQuery向ASP.NET MVC Controller发
- asp.net-mvc-3 – ASP.Net MVC隐藏/显示基于安全性的菜单项
- asp.net-mvc-3 – 如何使用ModelMetadata单元测试modelbind
- asp.net-web-api2 – 创建新的IHttpActionResult动作结果方
- 如何在ASP.NET MVC中渲染HTML字符串?
- Asp.net Webservice – 使用jquery AJAX安全地调
- asp.net-mvc – 路由到具有相同名称但不同参数的
- 详解ASP.NET Core 中的框架级依赖注入
- asp.net-mvc – 如何将服务器错误的http状态代码
- 如何设置asp.net下拉列表的样式
- .net – 抱歉,处理您的请求时出错
- asp.net-mvc – 405消息,Web Api不允许的方法
- asp.net – SqlException(0x80131904):第28行:
- asp.net-mvc – Url.Action with RouteValueDict
- asp.net-mvc – ASP.NET MVC – HtmlHelper和Ses
