我有这个解决方案(有效),但我想知道是否有一种方法可以创建一个循环来检查方法名称是否已发布,如果是 -> 运行该方法。当前代码:
if (HttpContext.Current.Request["FunctionName"] != null)
{
switch (HttpContext.Current.Request["FunctionName"])
{
case "DoStuff":
DoStuff();
//... etc
希望你明白了,否则我就不细说了。
提前致谢!
最佳答案
您可以调用 GetType().GetMethod(HttpContext.Current.Request["FunctionName"], new Type[]{})
,它会返回一个 MethodInfo
你可以调用。我不会,但有几个原因:
无论用户告诉你什么,做任何事情的一般风险都足够高,即使保证这是在每个方法(包括继承的)都可以安全运行的类中完成的,我' d 宁愿更积极地解析来自潜在恶意用户的请求。
在这种方法的便利性超过相对成本之前,必须有很多这样的方法,那时我想知道相关资源的规范。 URI 应映射到具有明确含义的资源,而不是包括厨房水槽以外的所有资源。无论如何,函数名称应该只有少量可能的值。
标题说您正在从查询字符串中获取此信息,这表明您正在通过执行不同的操作来响应 GET。 GET 应该是“查看”操作,返回所查看事物的状态。这当然需要做很多事情(典型的例子是进行大量复杂比较的搜索,可能针对各种不同的来源,但仍然是“查看”操作)。查询字符串不应选择操作选项,而应通过检查发布到资源的信息来完成——或者更好的是,对于每种操作,发布到具有完全不同 URI 的资源。
关于c# - 在通用处理程序中检查查询字符串和运行方法的循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9034611/