首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >访问IIS7 404重定向页面中的原始URL

访问IIS7 404重定向页面中的原始URL
EN

Stack Overflow用户
提问于 2011-02-22 04:05:59
回答 1查看 19.4K关注 0票数 19

在IIS7上设置的站点上,我有一个.aspx页面作为我的自定义404页面。我需要检索用户试图访问的原始URL,以便在404页面上执行一些处理。诀窍是,我需要专门处理不包含.aspx扩展名(例如http://example.com/testurl)的404,它们不会通过ASP.Net的自定义错误部分进行路由。我可以将IIS配置为指向我的自定义404,但在这一点上,我不知道如何获取原始URL?有没有人知道这是否可能?

谢谢,

麦克

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-02-22 12:07:20

是的,可以获得导致404错误的URL,您只需确保已正确配置了IIS。

有两种情况需要处理,一种是错误来自.NET处理的.aspx或其他页面,另一种是错误来自不是由.NET处理的错误文件夹(如http://example.com/testurl)或文件名(例如*.htm)。在IIS7中,您需要在web应用程序的"ASP.NET“部分的".NET error Pages”和" IIS“部分的"Error Pages”下配置自定义的404错误。web.config更改最终看起来如下所示:

代码语言:javascript
复制
<system.web>
    <!-- other system.web stuff -->
    <customErrors defaultRedirect="/Error404.aspx" mode="On" redirectMode="ResponseRewrite">
        <error redirect="/Error404.aspx" statusCode="404" />
    </customErrors>
</system.web>
<system.webServer>
    <!-- other system.webServer stuff -->
    <httpErrors errorMode="Custom">
        <remove statusCode="404" subStatusCode="-1" />
        <error statusCode="404" prefixLanguageFilePath="" path="/Error404.aspx" responseMode="ExecuteURL" />
    </httpErrors>
</system.webServer>

注意:如果你想让你的404页面实际返回404消息,上面列出的redirectMode="ResponseRewrite“是很重要的,我不认为它可以通过IIS来设置。

在我的示例中,我创建了一个名为Error404.aspx的页面来处理所有404错误。当.NET页面(.aspx等)抛出404异常时,可以在aspxerrorpath querystring变量中找到原始文件名。当常规的htm或其他页面导致404错误时,可以从Request.RawUrl属性中读取原始路径。我在Error404.aspx页面中使用了以下代码来处理这两种情况:

代码语言:javascript
复制
public partial class Error404 : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        OriginalUrl = Request.QueryString["aspxerrorpath"] ?? Request.RawUrl;
        Server.ClearError();
        Response.Status = "404 not found";
        Response.StatusCode = 404;
    }

    public string OriginalUrl { get; private set; }
}

默认情况下,404错误页不会返回404状态码,因此需要手动设置。有关更多详细信息,请参阅this post

票数 27
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5070695

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档