/// <summary> /// 控制器处理请求 /// </summary> /// <param name="context">上下文对象</param> private static void CallControler(HttpContext context) //控制器处理请求函数,利用反射来做,复杂性大为降低 { string Controler_name = ""; if (context.Session["accctx"] == null && !cachecookie()) { if (context.Request["state"] != null) //session对象 && mm缓存中对象木有, state有值(第三方登录标识) 表示没登录 进入第三方登录 { Controler_name = "ThreeLoginControler"; } else { Controler_name = "loginControler"; //session对象 && mm缓存中对象木有,表示没登录,加载登录控制器 } } else if (context.Request["ctrl"] == null && cachecookie()) //mm缓存中对象有值 且没有控制器 则加载 index控制器 { Controler_name = "indexControler"; } else if (context.Request["ctrl"] != null) //此参数表示控制器名 { Controler_name = context.Request["ctrl"] + "Controler"; //得到控制器名 } else { Controler_name = "defaultControler"; //如果不指定则使用默认控制器,可以放在web.config中。 } string nspace = "Web.Control"; //控制器命名空间,可以放在web.config中。 Assembly res = null; //命名空间程序集对象 IControler Controler = null; //用于接收控制器 res = getNamespace(); //获得程序集对象 if (res != null) { Controler = (IControler)res.CreateInstance(nspace + "." + Controler_name); //动态创建控制器实例 if (Controler != null) { Controler.ActionPerform(context); } } }