【发布时间】:2015-05-25 04:44:46
【问题描述】:
我正在尝试在我的 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="File"...
这就是我得到的...
【问题讨论】:
-
您不应该直接从 customErrors 提供 cshtml 文件。
-
@ErikPhilips 好的……这很酷。为什么?还有……你有什么建议?
标签: c# asp.net-mvc custom-error-pages