1

我遇到了一种情况,

我的自定义 404 页面适用于具有扩展名的 URL。

http://www.space.ca/ssss.aspx 自定义页面 URL 按预期提供,

但是,如果您尝试不带 .aspx 扩展名的链接 http://www.space.ca/ssss

它转到 IIS 默认页面。知道为什么吗?

这是我的配置,在 system.webserver 里面

 <httpErrors>
            <remove statusCode="500" subStatusCode="-1" />
            <remove statusCode="404" subStatusCode="-1" />
            <error statusCode="404" prefixLanguageFilePath="" path="/errors/404.aspx" responseMode="ExecuteURL" />
            <error statusCode="500" prefixLanguageFilePath="" path="/errors/500.aspx" responseMode="ExecuteURL" />
        </httpErrors>
4

2 回答 2

2

我知道这是很久以前发布的,但这可能对其他人有所帮助......

我遇到了同样的问题,主要是因为路径值中有'~',遗憾的是这不是你的问题,但如果你遵循以下,那么你应该没问题......

<customErrors mode="On" redirectMode="ResponseRewrite">
   <error statusCode="401" redirect="~/Errors/Unauthorized.aspx" />
   <error statusCode="403" redirect="~/Errors/Forbidden.aspx" />
   <error statusCode="404" redirect="~/Errors/PageNotFound.aspx" />
   <error statusCode="500" redirect="~/Errors/ServerError.aspx" />
   <error statusCode="501" redirect="~/Errors/ServerError.aspx" />
</customErrors>

<httpErrors errorMode="Custom">
   <remove statusCode="401" subStatusCode="-1" />
   <remove statusCode="403" subStatusCode="-1" />
   <remove statusCode="404" subStatusCode="-1" />
   <remove statusCode="500" subStatusCode="-1" />
   <remove statusCode="501" subStatusCode="-1" />
   <error statusCode="401" path="/Errors/Unauthorized.aspx" responseMode="ExecuteURL" />
   <error statusCode="403" path="/Errors/Forbidden.aspx" responseMode="ExecuteURL" />
   <error statusCode="404" path="/Errors/PageNotFound.aspx" responseMode="ExecuteURL" />
   <error statusCode="500" path="/Errors/ServerError.aspx" responseMode="ExecuteURL" />
   <error statusCode="501" path="/Errors/ServerError.aspx" responseMode="ExecuteURL" />
</httpErrors>

当然,您只需要为您希望为其创建自定义页面的那些状态代码添加条目。还要记住httpErrors应该放在部分,以及其中的customErrors部分。

您可以添加customErrors部分,因为它处理托管代码。httpErrors部分将处理所有内容的错误。

还请注意最后一件事...当您在本地机器上进行测试时,ASP.NET 和 HTTP 错误的默认设置是在本地浏览器上显示详细信息。您需要设置customErrors mode="On" AND httpErrors errorMode="Custom" 才能在本地计算机上查看自定义错误。

更多信息可以在这里找到:http ://www.iis.net/ConfigReference/system.webServer/httpErrors

于 2013-07-15T10:44:58.903 回答
0

这对我有用。

<httpErrors errorMode="Custom" existingResponse="Replace" defaultResponseMode="ExecuteURL">
      <clear />
      <error statusCode="404" path="~/error404.aspx" responseMode="Redirect" />
    </httpErrors>
于 2013-12-09T08:34:18.887 回答