c# - 在通用处理程序中检查查询字符串和运行方法的循环

标签 c# asp.net

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

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

希望你明白了,否则我就不细说了。

提前致谢!

最佳答案

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

  1. 无论用户告诉你什么,做任何事情的一般风险都足够高,即使保证这是在每个方法(包括继承的)都可以安全运行的类中完成的,我' d 宁愿更积极地解析来自潜在恶意用户的请求。

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

  3. 标题说您正在从查询字符串中获取此信息,这表明您正在通过执行不同的操作来响应 GET。 GET 应该是“查看”操作,返回所查看事物的状态。这当然需要做很多事情(典型的例子是进行大量复杂比较的搜索,可能针对各种不同的来源,但仍然是“查看”操作)。查询字符串不应选择操作选项,而应通过检查发布到资源的信息来完成——或者更好的是,对于每种操作,发布到具有完全不同 URI 的资源。

关于c# - 在通用处理程序中检查查询字符串和运行方法的循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9034611/

相关文章:

c# - 如何在 azure 中设置 Web 应用程序的连接字符串?

asp.net - 为 HTTP POST/GET 请求启用 ASP.NET ASMX Web 服务

asp.net - 替换 web.config 转换中的 IIS 重写规则

javascript - 获取 Uncaught ReferenceError :Button1_Click is not defined

c# - C# 中的探查器?

c# - 如何检查鼠标在 XNA 中是否可用 - Monogame

具有多选功能的 asp.net mvc 强类型 View 模型

asp.net - 自定义404页未针对缺少的ASPX页执行-IIS 7,5

c# - 当前者由Microphone创建时,如何使用PCMReaderCallback从AudioClip读取数据。在Unity中启动?

c# - LUIS 响应抛出错误并显示错误请求