私が取り組んでいる asp.net プロジェクトの読み込み時間を短縮したいと考えています。そのうちの 1 つはdropdownlists
、SQL テーブルの従業員のリストを Active Directory メンバーシップと比較することによって取得されるマネージャーのリストです。
これはから呼び出されますPage_Load
SqlDataSource empDB = (SqlDataSource)Page.Master.FindControl("EmployeeData");
DataView dv = (DataView)empDB.Select(DataSourceSelectArguments.Empty);
foreach (DataRowView drv in dv)
{
employeeList.Add(new Employee(int.Parse(drv["EMP_ID"].ToString()), drv ["FULL_NAME"].ToString()));
}
managerTest();
managerDropDownList.DataSource = managerList;
managerDropDownList.DataTextField = "fullName";
managerDropDownList.DataValueField = "emp_Id";
managerDropDownList.DataBind();
マネージャーのテスト方法:
private void managerTest()
{
PrincipalContext domainContext = new PrincipalContext(ContextType.Domain, "the_domain");
GroupPrincipal managersGroup = GroupPrincipal.FindByIdentity(domainContext, "Managers and Supervisors");
GroupPrincipal offManagersGroup = GroupPrincipal.FindByIdentity(domainContext, "Office Managers");
GroupPrincipal executivesGroup = GroupPrincipal.FindByIdentity(domainContext, "Executives");
GroupPrincipal managers2Group = GroupPrincipal.FindByIdentity(domainContext, "Managers");
foreach (Employee emp in employeeList)
{
UserPrincipal user = UserPrincipal.FindByIdentity(domainContext, emp.fullName);
if (user != null)
{
if (user.IsMemberOf(managersGroup) || user.IsMemberOf(offManagersGroup) || user.IsMemberOf(executivesGroup) || user.IsMemberOf(managers2Group))
{
managerList.Add(emp);
}
}
}
}
Employee は、名、姓、氏名の値を区切る単純なクラスです。
問題は、ページの読み込みが非常に遅く、ページにポストバックするコントロールがいくつかあり、ポストバックに時間がかかることです。この作業をより効率的にするためにできることはありますか?