如何在ASP.NET MVC 5中为每个区域显示不同的自定义错误页面

时间:2016-12-28 15:28:38

标签: asp.net asp.net-mvc

我设计了一个网站,为管理员提供一个区域(经理)。在主网站中,我可以轻松地在webconfig中自定义错误页面。有了这个:

  <httpErrors errorMode="Custom" existingResponse="Replace" defaultResponseMode="ExecuteURL">
  <remove statusCode="400"/>
  <remove statusCode="401"/>
  <remove statusCode="403"/>
  <remove statusCode="404"/>
  <remove statusCode="408"/>
  <remove statusCode="409"/>
  <remove statusCode="500"/>
  <error statusCode="400" responseMode="ExecuteURL" path="/Error/400"/>
  <error statusCode="401" responseMode="ExecuteURL" path="/Error/401"/>
  <error statusCode="403" responseMode="ExecuteURL" path="/Error/403"/>
  <error statusCode="404" responseMode="ExecuteURL" path="/Error/404"/>
  <error statusCode="408" responseMode="ExecuteURL" path="/Error/408"/>
  <error statusCode="409" responseMode="ExecuteURL" path="/Error/409"/>
  <error statusCode="500" responseMode="ExecuteURL" path="/Error/500"/>
</httpErrors>

现在我想向管理员区域的管理员显示一些不同的自定义错误页面(如他们的面板)。

有人可以告诉我该怎么做?

修改: 我在/Areas/Manager文件夹中放了一个新的web.config文件。

<?xml version="1.0" encoding="utf-8"?>
<configuration>
 <system.webServer>
<httpErrors errorMode="Custom" existingResponse="Replace"      defaultResponseMode="ExecuteURL">
  <remove statusCode="400"/>
  <remove statusCode="401"/>
  <remove statusCode="403"/>
  <remove statusCode="404"/>
  <remove statusCode="408"/>
  <remove statusCode="409"/>
  <remove statusCode="500"/>
  <error statusCode="400" responseMode="ExecuteURL" path="/Manager/Error/400"/>
  <error statusCode="401" responseMode="ExecuteURL" path="/Manager/Error/401"/>
  <error statusCode="403" responseMode="ExecuteURL" path="/Manager/Error/403"/>
  <error statusCode="404" responseMode="ExecuteURL" path="/Manager/Error/404"/>
  <error statusCode="408" responseMode="ExecuteURL" path="/Manager/Error/408"/>
  <error statusCode="409" responseMode="ExecuteURL" path="/Manager/Error/409"/>
  <error statusCode="500" responseMode="ExecuteURL" path="/Manager/Error/500"/>
</httpErrors>
  </system.webServer>
</configuration>

我甚至将httpErrors放在~/Areas/Manager/Views/web.config中。但总是出错,我看到/Error/ErrorCode而不是/Manager/Error/ErrorCode页。

1 个答案:

答案 0 :(得分:0)

创建一个位于Admin / Manager文件夹中的新web.config。然后,该文件夹可以拥有自己的一组httpErrors,这些httpErrors仅适用于位于该文件夹中的页面。