您的位置:首页 > 其它

.NET(用户自定义控件实现权限控制)

2012-07-04 09:51 267 查看
编写程序的时候,经常需要用的项目根目录。总结如下

取得控制台应用程序的根目录方法

方法1、Environment.CurrentDirectory 取得或设置当前工作目录的完整限定路径

方法2、AppDomain.CurrentDomain.BaseDirectory 获取基目录,它由程序集冲突解决程序用来探测程序集

取得Web应用程序的根目录方法

方法1、HttpRuntime.AppDomainAppPath.ToString();//获取承载在当前应用程序域中的应用程序的应用程序目录的物理驱动器路径。用于App_Data中获取

方法2、Server.MapPath("") 或者 Server.MapPath("~/");//返回与Web服务器上的指定的虚拟路径相对的物理文件路径

方法3、Request.ApplicationPath;//获取服务器上ASP.NET应用程序的虚拟应用程序根目录

取得WinForm应用程序的根目录方法

1、Environment.CurrentDirectory.ToString();//获取或设置当前工作目录的完全限定路径

2、Application.StartupPath.ToString();//获取启动了应用程序的可执行文件的路径,不包括可执行文件的名称

3、Directory.GetCurrentDirectory();//获取应用程序的当前工作目录

4、AppDomain.CurrentDomain.BaseDirectory;//获取基目录,它由程序集冲突解决程序用来探测程序集

5、AppDomain.CurrentDomain.SetupInformation.ApplicationBase;//获取或设置包含该应用程序的目录的名称

其中:以下两个方法可以获取执行文件名称

1、Process.GetCurrentProcess().MainModule.FileName;//可获得当前执行的exe的文件名。

2、Application.ExecutablePath;//获取启动了应用程序的可执行文件的路径,包括可执行文件的名称

转自/article/4847161.html

举一个简单的例子,在.NET的WEB应用中,有时候会涉及到用户权限的判断,如果没有权限,则进入不了该页面,当页面很多时,每次在页面中判断总觉得有些繁琐,这个时候,理所当然的想到了“用户自定义控件”。讲这个之前必须了解一下页面加载的顺序。

1.Master page中的用户控件的 page_init

2.页面中的用户控件的 page_init

3.page的page_init

4.Aspx的 page_init

5.Aspx的page_load

6.Master page的page_load

7.Master page中的用户控件的 page_load

8.Aspx页面中的用户控件的 page_load

.aspx、.master、ascx这三个页面中Page_Load的执行顺序是:.aspx中的pg-->.master中的pg-->ascx中的pg( pg-->page_load)

那我们发现,加载顺序都是page_init 然后才是page_load,所以在写“用户自定义控件”的时候,需要覆盖OnInit方法,具体代码如下。

override protected void OnInit(EventArgs e)
{
CheckUserRights();
base.OnInit(e);
}
private void CheckUserRights()
{
if (!Page.IsPostBack)
{
//string mapPath = Server.MapPath("~/");
string mapPath = Request.ApplicationPath;
string redirectPath = mapPath + "Default.aspx";
if (Session["CurrentUsre"] == null)
{
Session.Clear();
Session.Abandon();
Response.Clear();
Response.Write("<script defer>window.alert('您没有权限进入本页或当前登录用户已过期!\\n请重新登录或与管理员联系!');parent.location='" + redirectPath + "';</script>");
Response.End();
}
}
}


因为在不同的页面,在parent.location的时候,不能使用相对路径,所以这个时候,可以使用服务器根目录的路径,注意是在WebApp里面的根目录。(Default.aspx是默认页面)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: