循环检查查询字符串并在通用处理程序中运行方法

时间:2012-01-27 14:18:59

标签: c# asp.net

我有这个解决方案(有效),但我想知道是否有一种方法可以创建一个循环来检查方法名称是否已发布,以及是否为 - >运行方法。目前的代码:

if (HttpContext.Current.Request["FunctionName"] != null)
{
            switch (HttpContext.Current.Request["FunctionName"])
            {
                case "DoStuff":
                    DoStuff();
             //... etc

希望你能得到这个想法,否则就会很复杂。

提前致谢!

2 个答案:

答案 0 :(得分:2)

你可以调用GetType().GetMethod(HttpContext.Current.Request["FunctionName"], new Type[]{}),它会返回你可以调用的MethodInfo。我不会出于几个原因:

  1. do-whatever-the-user-tell-you的一般特点是足够高,即使保证这是在一个每个方法(包括继承)都可以安全运行的类中完成的,我' d而不是更积极地解析来自潜在恶意用户的请求。

  2. 在方便这个方法之前必须有很多这样的方法超过相对成本,在那一点上我想知道有关资源的规范。 URI应映射到具有明确定义的资源,而不是包括厨房水槽以外的所有内容。无论如何,函数名称应该只有少量可能的值。

  3. 标题显示你是从查询字符串中获取的,这表明你通过做不同的事情来对GET作出反应。 GET应该是“看”操作,返回所看到的东西的状态。这当然可以涉及很多(经典的例子是进行大量复杂比较的搜索,可能针对各种不同的来源,但仍然是“看”操作)。查询字符串不应选择操作选择,这应该通过检查POST到资源的信息来完成 - 或者更好地发布到具有完全不同的URI的资源,用于每种操作。

答案 1 :(得分:0)

基于后续注释,我将创建特定于上下文的处理程序,而不是一个处理所有通用请求的处理程序。否则将MVC框架集成到webforms项目中,让MVC框架处理对象/方法委托。