用于检查querystring并在泛型处理程序中运行方法的循环
本文关键字:运行 方法 循环 程序 处理 querystring 检查 泛型 用于 | 更新日期: 2023-09-27 18:21:51
我有这个解决方案(有效),但我想知道是否有办法进行循环,检查方法名称是否已发布,以及是否已发布->运行该方法。当前代码:
if (HttpContext.Current.Request["FunctionName"] != null)
{
switch (HttpContext.Current.Request["FunctionName"])
{
case "DoStuff":
DoStuff();
//... etc
希望你明白这个想法,否则就不详细了。
提前感谢!
您可以调用GetType().GetMethod(HttpContext.Current.Request["FunctionName"], new Type[]{})
,它将返回您可以调用的MethodInfo
。我不会这么做,原因有几个:
-
do-whatever-The-user-tells-you的总体危险性足够高,即使保证这是在每个方法(包括继承的)都可以安全运行的类中完成的,我也宁愿更积极地分析潜在恶意用户的请求。
-
在方便性超过相对成本之前,必须有很多这样的方法,在这一点上,我想知道有问题的资源的规格。URI应该映射到一个定义明确的资源,而不是包括厨房水槽以外的所有内容。无论如何,函数名应该只有少量可能的值。
-
标题表示您从查询字符串中获取此信息,这表明您通过做不同的事情来对GET做出反应。GET应该是"查看"操作,返回所查看事物的状态。这当然可能需要做很多工作(典型的例子是搜索,它可以进行很多复杂的比较,可能针对各种不同的来源,但仍然是一个"查看"操作)。查询字符串不应该选择操作,这应该通过检查张贴到资源的信息来完成,或者更好的是,张贴到每种操作具有完全不同URI的资源。
基于后续注释,我将创建特定于上下文的处理程序,而不是一个处理程序来处理所有通用请求。否则,将MVC框架集成到webforms项目中,并让MVC框架处理对象/方法委派。