【问题标题】:Custom error page content not displayed properly自定义错误页面内容未正确显示
【发布时间】:2014-04-18 03:08:02
【问题描述】:

我像这样在 web.config 中指定了自定义错误页面

<system.web>
   <customErrors mode="RemoteOnly" defaultRedirect="/Error.html" />
</system.web>

自定义错误页面及其内容正确显示。但是当url以斜杠结尾时,会显示错误页面内容,无法正常显示。

例如:
www.abc.com/product -> 错误页面内容正确显示
www.abc.com/product/ ->错误页面内容显示不正确

提前致谢。

编辑:

当url以“/”以外的任何特殊字符结尾时,url会正确重定向到Error.html,但以“/”结尾的url被认为是项目文件夹,因此错误页面无法正常显示。如果我错了,请纠正我。 任何建议。

【问题讨论】:

  • 如果您将默认重定向更改为~/Error.html,会发生什么情况?
  • 它正确重定向到Error.html。但是当url以斜杠“/”结尾时,错误页面内容显示不清晰
  • 您似乎希望任何“目录浏览”尝试重定向到您的错误页面。我不确定在没有注册路由的情况下这是否可能,就像使用 MVC 站点所做的那样。您仍然可以在普通的 ASP.NET 站点中注册路由,但您必须设置 IIS,以便所有请求都由 aspnet_isapi.dll 处理。

标签: c# asp.net custom-error-pages


【解决方案1】:

试试这个:

<customErrors mode="On" defaultRedirect="Error"></customErrors>

并在您的视图 -> 共享文件夹中有一个名为“Error.cshtml”的视图

在 View Error.cshtml 的顶部添加这一行:

@model System.Web.Mvc.HandleErrorInfo

...your code.....

希望对你有帮助

【讨论】:

  • 我没有在 MVC 中尝试。它是一个普通的 asp.net 项目
【解决方案2】:

当用户尝试目录浏览时,您希望重定向到错误页面。这通常是一个 HTTP 错误,由服务器处理,与您的 ASP.NET 处理分开处理。

如果您使用的是 IIS7+,那么您可以从How to disable Directory Browse in Web.ConfigAsp.net - Web.Config - Custom Errors 一起获取解决方案

具体到您的情况,您可能希望在您的 web.config 中有一个类似于:

<system.webServer>
  <directoryBrowse enabled="false" />
  <httpErrors errorMode="Custom">
    <remove statusCode="403"/>
    <error statusCode="403" path="~/Error.aspx" responseMode="Redirect"/>
  </httpErrors>
</system.webServer>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-10
    • 2013-08-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多