我的 web.config 中有以下设置
<customErrors mode="RemoteOnly" defaultRedirect="/ServerError" redirectMode="ResponseRewrite"/>
<httpErrors errorMode="Custom" existingResponse="Replace">
<remove statusCode="400" subStatusCode="-1" />
<remove statusCode="404" subStatusCode="-1" />
<remove statusCode="500" subStatusCode="-1" />
<error statusCode="400" path="/error/Error400" responseMode="ExecuteURL" />
<error statusCode="404" path="/error/Error404" responseMode="ExecuteURL" />
<error statusCode="500" path="/error/Error500" responseMode="ExecuteURL" />
</httpErrors>
通过上述配置,我们的网站能够捕获 404,并显示从/error/error404 提供的带有 404 Header 的漂亮 404 页面。
现在我有以下情况:
1. 用户导航到/action/id
2. 未找到 ID,我想返回 404,但提供自定义 404,与/error/error404 提供的通用 404 不同。即提供不同的自定义页面;
在我的 Controller 中,我有以下内容:
Response.StatusCode=(int)HttpStatusCode.NotFound;
Response.TrySkipIisCustomErrors = true;
return View("SomeView", model);
这是可以实现的吗?
PS:使用 IIS 8
乐 如果有人对我实现的解决方案感兴趣,我已经做了以下事情:
1. 在我的
action
,我设置了一个 session 变量Session["InvalidId"]=something
2. 在我的ErrorController
我有以下内容:var invalidId = Session["InvalidId"];
if(invalidId != null)
{
return View("SomeView", model);
}
这帮助我为我的通用页面提供了不同的 404 页面。
谢谢您的帮助 !
最佳答案
是的,这很容易实现,而且您并不需要其他页面。您需要为自定义消息提供一些 session 变量,并使用它们来确定是否需要显示一些消息。如果是这样,那么将它们显示在您的 View 中。
算法:
关于asp.net-mvc - IIS 中的自定义错误页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39914380/