gpt4 book ai didi

asp.net-mvc - IIS 中的自定义错误页面

转载 作者:行者123 更新时间:2023-12-03 08:11:47 27 4
gpt4 key购买 nike

我的 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"]=something2. 在我的 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/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com