我如何获取将在给定请求上调用的控制器操作的MethodInfo?我有一个控制器和处理403的操作,因为用户没有正确的角色。它可以访问导致异常的原始RequestContext。我希望能够做的是用我们的行为描述来装饰我的行为,然后允许用户通知他们的经理,请求访问权限,包括电子邮件中的描述。那么,给定RequestContext,您如何确定将调用哪些操作?显然,从RouteData中获取控制器和动作名称更加复杂,因为经常会重载动作方法等。一旦我有了MethodInfo,就很容易获得属性等。尝试重述它可能是一堆蠕虫,因为您可能需要使用反射来发现正确的方法-也许将所需数据作为代码的一部分插入到授权失败的HttpContext.Items中更简单?然后,您可以通过RequestContext.HttpContext.Items从您的处理程序方法中获取它。这是您的扩展方法。如果您在控制器上进行依赖注入(非参数构造函数),则需要使用反射来枚举控制器构造函数,或者使用IOC容器实例化控制器,而不是使用Activator.CreateInstance。此外,可以修改它以轻松使用类似的上下文,如ExceptionContext或HttpContext。公共静态类RequestContextExtensions{publicstaticMethodInfoGetActionMethod(thisRequestContextrequestContext){());ControllerContextcontrollerContext=newControllerContext(requestContext,Activator.CreateInstance(controllerType)asControllerBase);ControllerDescriptorcontrollerDescriptor=newReflectedControllerDescriptor(controllerType);ActionDescriptoractionDescriptor=controllerDescriptor..ToString());返回(actionDescriptor作为ReflectedActionDescriptor).MethodInfo;我已经回答了我自己的问题,这与此非常相似。如果您仍然对此感兴趣,也许我可以深入研究一下。我的问题不是从您的URL开始,而是从控制器和操作名称以及http方法(GET、POST...)开始。以上是C#学习教程:如何获取给定请求时将调用的控制器动作的MethodInfo?如果所有分享的内容对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
