2010-10-04 53 views
0

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

实施例:
http://www.mysite.com/login - 文件名是login.aspx的,这是不通过链接反射。 http://www.mysite.com/members - 文件名仍然为Login.aspx如果用户没有登录

回答

2

而不是使用网址,你可以使用类名。?

If TypeOf(Page) Is LoginPage Then 

End If 
+0

是的,我可以。但是,如果我已经在页面上,我不妨获取文件名(或masterpage,所以我不必复制代码)。我想在HttpModule中这样做,以加快处理速度,因为我可以在页面生命周期的早期阶段触发重定向。此外,目前所有这些页面都使用相同的主页面,但这不一定会保持不变。 – Shagglez 2010-10-04 13:20:13

+0

我会把代码放在一个继承的基本页面中,并以这种方式共享代码,而不是将它放在母版页中。 – adam0101 2010-10-04 13:26:28

+1

Basepage是一个更好的主意,谢谢。标记为已接受。我最终使用Page.AppRelativeVirtualPath来获取文件名,因为否则我需要以不同的方式继承页面。 – Shagglez 2010-10-04 14:16:26

0
System.IO.Path.GetFileName(HttpContext.Current.Request.FilePath); 
+0

不,因为我是路由表,这只能返回路径,而不是实际的文件名 – Shagglez 2010-10-04 13:07:36

相关问题