以编程方式询问全局 asax 中的页面是否已标记为过时?

发布于 2024-08-07 18:01:50 字数 137 浏览 1 评论 0原文

我想将我的网站中当前处于“过时”状态的某些页面标记为“过时”,并在我的 global.asax 中选取该页面并将客户端重定向到其他页面。

然后我会让网站通知开发团队有人试图访问该页面。

您可以从全球任何地方访问页面的类型信息吗?

I would like to mark some pages in my site that is currently in the wild as "obsolete" and pick up on that in my global.asax and redirect the client to a different page.

Then I will have the site notify the dev team that someone tried to hit that page.

Can you access the Type information for the page from any global place?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

十年不长 2024-08-14 18:01:50

假设您有以下页面:

[Obsolete]
public partial class _Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    { }
}

在 global.asax 中您可以执行以下操作:

protected void Application_PreRequestHandlerExecute(object sender, EventArgs e)
{
    if (!(this.Context.Handler is System.Web.UI.Page))
    {
        return;
    }

    var isPageObsolete = this.Context.Handler
            .GetType()
            .BaseType
            .GetCustomAttributes(typeof(ObsoleteAttribute), true)
            .Length > 0;
    if (isPageObsolete)
    {
        Response.Redirect("http://www.google.com");
    }
}

Provided that you have the following page:

[Obsolete]
public partial class _Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    { }
}

In global.asax you could do this:

protected void Application_PreRequestHandlerExecute(object sender, EventArgs e)
{
    if (!(this.Context.Handler is System.Web.UI.Page))
    {
        return;
    }

    var isPageObsolete = this.Context.Handler
            .GetType()
            .BaseType
            .GetCustomAttributes(typeof(ObsoleteAttribute), true)
            .Length > 0;
    if (isPageObsolete)
    {
        Response.Redirect("http://www.google.com");
    }
}
青衫负雪 2024-08-14 18:01:50

我认为达​​林的回答很有创意。我提供另一种观点。到目前为止讨论的方法是在页面上标记页面。在配置或其他 xml 文件中标记页面怎么样?

<obsoletePages>
  <page path="/page123.aspx />
  <page path="/pagexyz.aspx />
</obsoletePages>

在global.asax中,在Application_BeginRequest()处拦截请求,如果在配置文件中找到请求页面,则执行重定向。

I think Darin's answer is quite creative. I'm offering another perspective. The method discussed so far is marking the page AT the page. How about marking the page say in the config or another xml file like this.

<obsoletePages>
  <page path="/page123.aspx />
  <page path="/pagexyz.aspx />
</obsoletePages>

At global.asax, intercept the request at Application_BeginRequest(), if the request page is found within the configuration file, perform the redirect.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文