自定义404页面不适用于无扩展名的URL

时间:2013-04-22 17:31:44

标签: iis-7 web-config

我遇到了一个情况,

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

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

但是,如果您尝试不带.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>

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

这适合我。

<httpErrors errorMode="Custom" existingResponse="Replace" defaultResponseMode="ExecuteURL">
      <clear />
      <error statusCode="404" path="~/error404.aspx" responseMode="Redirect" />
    </httpErrors>