【问题标题】:How to get file name of any page regardless of URL?无论URL如何,如何获取任何页面的文件名?
【发布时间】:2010-10-04 21:23:15
【问题描述】:

我想通过指定字符串数组并检查当前 URL 是否符合自定义 HttpModule 中的特定条件,在站点周围的某些页面上强制使用 SSL,例如用于登录、注册等。 它运行良好,只要 URL 正确反映页面,但是我使用路由表,所以一些请求我指向登录页面,如果页面需要登录,我最终会在屏幕上显示登录页面和 URL为会员区。 有没有办法找到页面的实际文件名?

示例:
http://www.mysite.com/login - 文件名为 login.aspx,不反映在 url 中。 http://www.mysite.com/members - 如果用户未登录,文件名仍然是 login.aspx。

【问题讨论】:

    标签: asp.net


    【解决方案1】:

    您可以使用类名而不是 URL 吗?

    If TypeOf(Page) Is LoginPage Then
    
    End If 
    

    【讨论】:

    • 是的,我可以。但是,如果我已经在页面上,我不妨获取文件名(或母版页,因此我不必复制代码)。我想在 HttpModule 中执行此操作以加快处理速度,因为我可以在页面生命周期的早期阶段触发重定向。此外,目前所有这些页面都使用相同的母版页,但不一定会保持这种情况。
    • 我会将代码放在继承的基页中并以这种方式共享代码,而不是将其放在母版页中。
    • Basepage 是一个更好的主意,谢谢。标记为已接受。我最终还是使用 Page.AppRelativeVirtualPath 来获取文件名,否则我需要以不同的方式继承页面。
    【解决方案2】:
     System.IO.Path.GetFileName(HttpContext.Current.Request.FilePath);
    

    【讨论】:

    • 不,因为我是路由表,所以只返回路径,而不是实际文件名
    猜你喜欢
    • 2019-08-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-25
    • 2021-06-07
    • 2016-03-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多