我正在尝试在ASP.NET MVC(版本5.2.3)项目中设置自定义错误页面。我跟着prescribed setup,但我仍然无法显示页面。
我试图通过在我的一个控制器操作中引发异常来测试页面。
所以,我的问题是......
有人可以帮我指导吗?
我的WEB.CONFIG看起来像:
<system.web>
<!-- CUSTOM ERRORS: customErrors -->
<customErrors mode="On" defaultRedirect="~/views/errors/error.cshtml" redirectMode="ResponseRewrite">
<error statusCode="401" redirect="~/views/errors/forbidden.cshtml" />
<error statusCode="403" redirect="~/views/errors/forbidden.cshtml" />
<error statusCode="404" redirect="~/views/errors/notfound.cshtml" />
</customErrors>
</system.web>
<system.webServer>
<!-- CUSTOM ERRORS: httpErrors -->
<httpErrors existingResponse="Replace" errorMode="Custom">
<remove statusCode="401" subStatusCode="-1" />
<error statusCode="401" prefixLanguageFilePath="" path="~/views/errors/forbidden.cshtml" responseMode="File" />
<remove statusCode="403" subStatusCode="-1" />
<error statusCode="403" prefixLanguageFilePath="" path="~/views/errors/forbidden.cshtml" responseMode="File" />
<remove statusCode="404" subStatusCode="-1" />
<error statusCode="404" prefixLanguageFilePath="" path="~/views/errors/notfound.cshtml" responseMode="File" />
<remove statusCode="500" subStatusCode="-1" />
<error statusCode="500" prefixLanguageFilePath="" path="~/views/errors/error.cshtml" responseMode="File" />
</httpErrors>
</system.webServer>
我的控制器行动看起来像:
这是我的控制器的一个例子。
public class HomeController : BaseController
{
#region <Actions>
// GET: Home/Index
[HttpGet]
[AllowAnonymous]
public ActionResult Index()
{
TraceHandler.TraceIn(TraceLevel.Info);
var unitOfWork = new AmericaVirtualToursUnitOfWork();
var viewmodel = new HomeIndexViewModel(unitOfWork, User);
// Trying to get the ERROR page to show
throw new ApplicationException("Testing");
TraceHandler.TraceOut();
return View(viewmodel);
}
#endregion
}
CSHTML文件的路径正确...
当responseMode =“文件”......
这就是我得到的......
答案 0 :(得分:0)
我完成了类似的工作,创建了一个错误控制器,使用3种不同的方法(Error401,Error403,Error404
),以下web.config
指向控制器:
<customErrors mode="On" defaultRedirect="~/Error">
<error redirect="~/Error/Error401" statusCode="401" />
<error redirect="~/Error/Error403" statusCode="403" />
<error redirect="~/Error/Error404" statusCode="404" />
</customErrors>