我正在尝试在我们的Web API项目中创建一个customError页面。如果API中发生任何未处理的错误,我需要重定向到某个自定义页面,或者如果路由不可用,那么我还需要重定向到某个自定义错误页面。为此,我在web.config文件中添加了以下设置。
<compilation debug="true" targetFramework="4.5" />
<customErrors mode="On" defaultRedirect="~/Error">
<error statusCode="404" redirect="~/Error"/>
</customErrors>
我在共享文件夹中添加了Error.cshtml视图。 (注意:我的项目中没有错误控制器)
但如果我点击任何无效路径,我将获得IIS设置404页面。请看屏幕截图。
不确定,我到底错过了什么。 此外,如果我附加了一个调试器,它不会来自Global.asax.cs的Application_Error方法(例如404/501错误)。令人惊讶的。
我们将不胜感激。
答案 0 :(得分:0)
我今天遇到了同样的问题,并找到了可以帮助您的解决方案。 我想在你的控制器中你正在做这样的事情:
public ActionResult AddReport
...
if (something is bad...)
return HttpNotFound("Hey you have some beautiful error here");
所以这是你在问题中包含的截图 解决方案就是这样做
public ActionResult AddReport
...
if (something is bad...)
return new HttpException(404, "Hey you have some beautiful error here");
<强> 修改 强>
根据您的评论,当您已经有许多控制器时,这不是实用的解决方案
在这种情况下,您可以尝试编辑您的web.config并将 标记替换为
<httpErrors errorMode="Custom">
<remove statusCode="404"/>
<error statusCode="404" path="/Error.html" responseMode="ExecuteURL"/>
</httpErrors>
快乐的编码!!