Exemple #1
0
 /// <summary>将reques请求的参数封装到CorRefEntity对象中
 /// </summary>
 /// <param name="para"></param>
 /// <param name="request"></param>
 public static void FillCorRefEntity(RefRequestEntity para, HttpRequest request)
 {
     foreach (var key in request.Params.AllKeys)
     {
         para.Request.Add(key, request.Params[key]);
     }
 }
Exemple #2
0
        public RefRespondEntity Index3(RefRequestEntity param)
        {
            RefRespondEntity result = new RefRespondEntity(RespondType._String);

            result.ResultContext = "我是INDEX3乱码";
            return(result);
        }
Exemple #3
0
        //
        // GET: /Demo/

        public RefRespondEntity Index(RefRequestEntity param)
        {
            RefRespondEntity result = new RefRespondEntity(RespondType._Redirect);

            result.ResultContext = HuberVariable.CurWebUrl + "/Demo/Index2";
            return(result);
        }
        /// <summary>
        /// 调用Action视图
        /// </summary>
        /// <param name="actionName"></param>
        /// <param name="controllerName"></param>
        /// <param name="routeValues">传入参数</param>
        /// <returns></returns>
        public IEncodedString Action(string actionName, string controllerName, object routeValues)
        {
            RefRequestEntity paras = SetParamValue(routeValues);

            var    t      = HuberHttpModule.CurDomainAssembly.GetType(HuberHttpModule.CurDomainAssemblyName + ".Controllers." + controllerName + "Controller");
            var    m      = t.GetMethod(actionName);
            object dObj   = Activator.CreateInstance(t);
            object result = m.Invoke(dObj, new object[] { paras });

            return(new RawString((result as RefRespondEntity).ResultContext.ToString()));
        }
Exemple #5
0
        public RefRespondEntity Index4(RefRequestEntity param)
        {
            object AA = param.Request["A"];
            object BB = param.Request["B"];
            object CC = param.Request["C"];

            RefRespondEntity result = new RefRespondEntity(RespondType._String);

            result.ResultContext = View();
            object tt = ViewBag.test;

            return(result);
        }
        /// <summary>
        /// 根据model设置传入参数
        /// </summary>
        /// <param name="routeValues"></param>
        /// <returns></returns>
        private static RefRequestEntity SetParamValue(object routeValues)
        {
            RefRequestEntity paras = new RefRequestEntity();

            Type t1 = routeValues.GetType();

            PropertyInfo[] pis = t1.GetProperties();
            foreach (PropertyInfo pi in pis)
            {
                paras.Request.Add(pi.Name, pi.GetValue(routeValues));
            }
            return(paras);
        }
Exemple #7
0
        public RefRespondEntity Index2(RefRequestEntity param)
        {
            var o1 = param.Request["qq"];
            var o2 = param.Request["addr"];
            RefRespondEntity result = new RefRespondEntity(RespondType._String);
            var M = new TestM()
            {
                A = "aaa", B = "gffff", C = "fff"
            };

            M.A                  = HuberVariable.CurWebDir;
            ViewBag.abc          = "ccc";
            ViewBag.test         = "my test result";
            result.ResultContext = View("Index2", M);
            return(result);
        }
Exemple #8
0
        private static void Application_BeginRequest(object sender, EventArgs e)
        {
            HttpApplication application = sender as HttpApplication;
            HttpResponse    respond     = application.Response;
            HttpRequest     request     = application.Request;
            string          url         = request.Url.AbsolutePath.ToString();
            string          _action     = url.Substring(url.LastIndexOf("/") + 1);

            if (_action.IndexOf(".") < 0)//过滤非action请求
            {
                string controller = string.Empty;
                string action     = string.Empty;
                // getUrlPathEntity(url, ref controller, ref action);

                Plugins plugin = GetPluginModel(url);
                if (plugin != null)
                {
                    controller = plugin.ControllerName;
                    action     = plugin.ActionName;
                }


                if (controller != string.Empty && action != string.Empty)
                {
                    System.Type t    = CurDomainAssembly.GetType(controller, false, true);
                    object      dObj = Activator.CreateInstance(t);
                    System.Reflection.MethodInfo method = t.GetMethod(action);



                    RefRequestEntity paras = new RefRequestEntity();
                    //paras.CurPageRights = userRight;//设置本次请求的用户权限
                    #region 获取http参数
                    RequestHandle.FillCorRefEntity(paras, request);
                    #endregion
                    object result = method.Invoke(dObj, new object[] { paras });
                    RequestHandle.ResposeResult(respond, result);
                }
                else
                {
                    //respond.Write(FilterConfig.CODE404);
                }
            }
        }
        // Renders the partial view with a copy of the given view data plus the given model
        /// <summary>
        /// 部分视图
        /// </summary>
        /// <param name="partialViewName">部分视图名称</param>
        /// <param name="controllerName">控制器名称</param>
        /// <param name="model"> model</param>
        /// <param name="ViewBag">ViewBag</param>
        /// <returns></returns>
        public IEncodedString RenderPartial(string partialViewName, string controllerName, object model, DynamicViewBag ViewBag)
        {
            RefRequestEntity paras = SetParamValue(model);

            var    t          = HuberHttpModule.CurDomainAssembly.GetType(HuberHttpModule.CurDomainAssemblyName + ".Controllers." + controllerName + "Controller");
            var    ActionFunc = t.GetMethod(partialViewName);
            object dObj       = Activator.CreateInstance(t);

            var AddViewBageFunc = t.GetMethod("AddViewBageValues");

            foreach (string key in ViewBag.GetDynamicMemberNames())
            {
                AddViewBageFunc.Invoke(dObj, new object[] { key, Impromptu.InvokeGet(ViewBag, key) });
            }

            object result = ActionFunc.Invoke(dObj, new object[] { paras });

            return(new RawString((result as RefRespondEntity).ResultContext.ToString()));
        }
Exemple #10
0
        // 请求拦截
        private void Application_BeginRequest(object sender, EventArgs e)
        {
            HttpApplication application = sender as HttpApplication;
            HttpResponse    respond     = application.Response;
            HttpRequest     request     = application.Request;
            string          url         = request.Url.AbsolutePath.ToString();

            //如果请求以“/plugins/”开头,表面我们需要对该请求做拦截处理了。
            if (url.ToLower().StartsWith("/plugins/"))
            {
                string action = url.Substring(url.LastIndexOf("/") + 1);
                //如果是非静态文件,即是action
                if (action.IndexOf(".") < 0)
                {
                    #region 匹配controller和action

                    var urlEntity = HuberPluginHandle.getUrlPathEntity(url.Substring(8), true);
                    #endregion
                    if (urlEntity != null && urlEntity.controller != null)
                    {
                        #region 获取路径中的插件名称等信息

                        #endregion
                        SandBoxDynamicLoader sandBox = HuberPluginHandle.getSandBox(urlEntity.pluginname, urlEntity.pluginversion);

                        if (sandBox != null)
                        {
                            List <RightEntity> userRight = new List <RightEntity>();
                            string             uid       = string.Empty;
                            int login = new UserBll().chekLogin(ref uid, false, userRight);
                            if (login == 2)//验证用户是否具有访问的权限
                            {
                                RefRequestEntity paras = new RefRequestEntity();
                                paras.PageRights = userRight;
                                paras.UserID     = uid;
                                #region 获取http参数
                                RequestHandle.FillCorRefEntity(paras, request);
                                #endregion
                                //sandBox.InvokeMothod(urlEntity.controller, "InitChannel", paras)
                                var result = sandBox.InvokeMothod(urlEntity.controller, urlEntity.action, paras);
                                RequestHandle.ResposeResult(respond, result);
                            }
                            else if (login == 1)
                            {
                                RequestHandle.ResponseNoRight(request, respond);
                            }
                            else
                            {
                                RequestHandle.ResponseNoLogin(request, respond);
                            }
                        }
                    }
                    else
                    {
                        RequestHandle.ResponseNotfound(request, respond);;
                    }

                    respond.End();
                }
            }
            else
            {
                if (!url.ToLower().Equals("/user/login"))
                {
                    string action = url.Substring(url.LastIndexOf("/") + 1);
                    if (action.IndexOf(".") < 0)
                    {
                        List <RightEntity> userRight = new List <RightEntity>();
                        string             uid       = string.Empty;
                        int login = new UserBll().chekLogin(ref uid, false, userRight);
                        if (login == 2)//验证用户是否具有访问的权限
                        {
                        }
                        else if (login == 1)
                        {
                            RequestHandle.ResponseNoRight(request, respond);
                        }
                        else
                        {
                            RequestHandle.ResponseNoLogin(request, respond);
                        }
                    }
                }
            }
        }