首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

我可以从HttpContext获取当前正在执行的控制器吗?

当然可以。在ASP.NET Core中,您可以使用HttpContext来获取当前正在执行的控制器。以下是一个示例代码:

代码语言:csharp
复制
public class MyController : Controller
{
    public IActionResult MyAction()
    {
        var controllerName = HttpContext.GetRouteData().Values["controller"].ToString();
        var actionName = HttpContext.GetRouteData().Values["action"].ToString();

        return View();
    }
}

在这个示例中,我们使用HttpContext.GetRouteData()方法来获取当前正在执行的控制器和操作名称。然后,我们将这些值存储在变量controllerName和actionName中,并在需要时使用它们。

请注意,这个示例代码是针对ASP.NET Core的,如果您使用的是ASP.NET MVC 5或更早的版本,您需要使用不同的方法来获取当前正在执行的控制器。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

如何获取当前正在执行脚本的绝对路径

如图所示,dirname $0是不能在命令行下单独执行的。 举个例子,我用mkdir -p创建一系列文件夹 mkdir -p 1/2/3/4/5/6 然后写一个小脚本 test.sh #!...现在我们回头来把这个脚本拆开来理解一下 `` 表示执行引号内的命令 $0 表示当前执行脚本的文件名 dirname $0 表示获取当前执行脚本的路径 这样一来就能明白dirname $0是如何获取当前执行脚本的路径了吧.../bin/bash basepath=$(cd `dirname $0`; pwd) echo $basepath 此时输出的结果是脚本所在路径,但如果我换一种命令替换的方式 #!.../bin/bash basepath=`cd `dirname $0`; pwd` echo $basepath 出现了报错,这就需要按我上面提到的在多层次的复合替换中,``必须要额外的跳脱处理(反斜线...),如果我按以下代码加上反斜线即可正常输出。

1.8K20
  • 【asp.net core 系列】10 实战之ActionFilter

    Action执行前的上下文,表示Action并未开始执行,但是已经获取到了控制器实例: public class ActionExecutingContext : FilterContext {...ActionArguments 表示Action的参数列表,这里面放着各种从用户接到请求参数以及其他中间处理程序添加的参数 Controller 表示执行该请求的控制器,在之前我们提过,asp.net...core 对于控制器的限制很小,所以控制器什么类型都可能,故而这里使用object作为控制器类型 Result 执行结果,正常情况下,在此处获取这个属性的值没有意义。...{ get; set; } } ActionDescriptor 执行的Action描述信息,包括Action的显示名称、一些参数等,具体用到的时候,再为大伙详细说 HttpContext 可以通过这个属性获取此次请求的...4 总结 到目前为止,实战系列也有了几篇,很多小伙伴问我能提供一下源码吗?当然,能呀。不过不是现在,容我留个谜底。当主要框架功能完成之后,我就会给小伙伴们发代码的。

    66530

    ASP.NET MVC5+EF6+EasyUI 后台管理系统(21)-权限管理系统-跑通整个系统

    ,大家可以打开来看下 创建一个权限的类permModel,我们将获取到的权限保存到这个类中去,这个类最终是一个一个的session转换而来的。...SysRightRepository变成SysUserRepository层,我这样做是为了区分一下而已,SysRight代表权限,SysUser是用户,根据不同的用户获取他的权限 我们创建一个筛选器在...,如果没有从 //如果存在区域,Seesion保存(区域+控制器) if (!...{ perm = userBLL.GetPermission(account.Id, controller);//获取当前用户的权限列表...目前为止,我们一个基于按钮级别的权限系统已经全部跑通,现在,可以创建一些没有权限的Action来验证了 我创建:(很明显我们数据库没有这个test的 action的权限),所以你别想越权操作了 [SupportFilter

    2.4K70

    从EFCore上下文的使用到深入剖析DI的生命周期最后实现自动属性注入

    那么怎样才能更优雅的获取数据库上下文实例呢,我想到以下几种办法。...2、 从DI容器手动获取 既然前面已经在启动类中注册了上下文,那么从DI容器中获取实例肯定是没问题的。...这里有个核心点要注意的是,从DI容器获取实例的时候一定要保证是和当前请求是同一个Scope,也就是说,必须要从当前的HttpContext中拿到这个IServiceProvider。...第一个是由于控制器的构造函数中不能直接使用ControllerBase的HttpContext属性,所以必须要通过注入IHttpContextAccessor对象来获取,貌似问题又回到原点。...,DefaultControllerActivator中的控制器实例是从TypeActivatorCache获取的,而自己的激活器是从DI获取的,所以必须额外把系统所有控制器注册到DI中,封装成如下的扩展方法

    1.3K20

    【愚公系列】2023年02月 WMS智能仓储系统-003.HttpContext的使用

    文章目录 前言 一、HttpContext的使用 1.注入 2.控制器中使用 3.运行 二、Session和Cookies的封装 1.封装类 2.注入 3.使用 ---- 前言 网页和webapi程序交互是通过...HttpContext 对象主要包含以下信息: Request 用于获取用户请求的对象,浏览器向Web程序提交表单、访问的URL、URL中包含的查询字符串、报文请求头等等。...可以包括端口 HttpContext 获取或设置请求上下文 IsHttps 检测当前是否HTTPS连接 Method 获取或设置HTTP方法 Path 获取或设置当前请求的路径,即URL PathBase...Query 查询字符串的集合 QueryString 获取或设置用于在Request.Query中创建查询集合的原始查询字符串 Scheme 获取或设置HTTP请求方案 在.NET Core中访问...一、HttpContext的使用 1.注入 services.AddSingleton(); 2.控制器中使用 /

    42910

    如何创建一个自定义的`ErrorHandlerMiddleware`方法

    在本文中,我将讲解如何通过自定义ExceptionHandlerMiddleware,以便在中间件管道中发生错误时创建自定义响应,而不是提供一个“重新执行”管道的路径。...如果您正在使用该[ApiController]属性(你可能应该这样使用),并且该错误来自您的Web API控制器,那么ProblemDetails默认情况下会得到一个结果,或者您可以进一步对其进行自定义...; await JsonSerializer.SerializeAsync(stream, problem); } } 您可以在序列化ProblemDetails之前记录从HttpContext...如果您的应用程序现在在Development环境中引发异常,则您将在响应中获取作为JSON返回的完整异常: ? 在生产环境中,您仍然会得到ProblemDetails响应,但是省略了详细信息: ?...然后,我从官方文档中展示了建议的方法,该方法使用MVC控制器为API 生成ProblemDetails响应。

    2.2K10

    自己动手写一个简单的MVC框架(第一版)

    为了保证程序的纯净,我们可以将所有默认的引用都移除。当然,我们还是得保留几个必要的dll引用: ?...,它接收一个HttpContext的上下文对象。   ...context); }   至此,MvcHandler的代码就写完,我们可以总结一下它的主要流程: ?...路由模块就是一个很简单的HttpModule(如果您对HttpModule不熟悉,请浏览我翻译的一篇文章:ASP.NET应用程序和页面生命周期),而ASP.NET MVC帮我们实现了UrlRoutingModule...从而使我们轻松实现了路由机制,该机制获取了路由数据,并制定处理程序(如MvcHandler),执行MvcHandler的ProcessRequest方法找到对应的Controller类型,最后将控制权交给对应的

    1K21

    ASP.NET三剑客 HttpApplication HttpModule HttpHandler 解析

    HttpRunTime会根据IsapiWorkerRequest对象创建用于表示当前HTTP请求的上下文对象HttpContext。...当后续请求到达时,运行时会从池中获取一个HttpApplication对象与请求进行配对。该对象与请求相关联,并且只有该请求,直到请求处理完成。...前面我们讲到过,HttpApplication对象是由HttpRunTime根据当前HTTP请求的上下文对象HttpContext创建或从池子中获取的,并且在HttpApplication初始化过程中,...还有一种映射的方法,我们可以调用当前HttpContext的RemapHandler方法将一个HttpHandler对象映射到当前的HTTP请求。...圈红的部分,每当RemapHandler执行时,它会将当前方法所在事件(在ASP,NET管道模型中我们提到了随着HttpContext对象的创建,HttpRunTime会利用HttpApplicationFactory

    2.3K91

    ASP.Net请求处理机制初步探索之旅 - Part 5 ASP.Net MVC请求处理流程

    我们看到ASP.NET MVC从一个不完整的小孩长成一个日渐成熟的巨人,我们可以从开源社区找到ASP.NET MVC的源码,相比之前我们需要Reflector进行反编译查看,这次则轻松得多。   ...这里我们选择ASP.NET MVC 4的源码作为分析对象,我已经将其上传到了网盘中,你可以通过下面这个地址进行下载:   传送门:http://pan.baidu.com/s/1bnF8ZPt   下载完成后...转到定义一看,原来不就是我们在开发中经常返回的ActionResult类型吗?...中的Result中,现在继续执行过滤器(比如:可以对刚刚的Action结果进行一些处理),目的也是为了完成AOP的效果,比如执行完Action之后,必须要执行Action结束后的过滤器业务逻辑方法。...首先,我们从字面上来看,Hierarchy代表层次,那么方法名的意思大概是:根据层次执行页面。那么,什么是页面的层次?

    1.1K30

    ASP.NET三剑客 HttpApplication HttpModule HttpHandler 解析

    HttpRunTime会根据IsapiWorkerRequest对象创建用于表示当前HTTP请求的上下文对象HttpContext。...当后续请求到达时,运行时会从池中获取一个HttpApplication对象与请求进行配对。该对象与请求相关联,并且只有该请求,直到请求处理完成。...前面我们讲到过,HttpApplication对象是由HttpRunTime根据当前HTTP请求的上下文对象HttpContext创建或从池子中获取的,并且在HttpApplication初始化过程中,...还有一种映射的方法,我们可以调用当前HttpContext的RemapHandler方法将一个HttpHandler对象映射到当前的HTTP请求。...圈红的部分,每当RemapHandler执行时,它会将当前方法所在事件(在ASP,NET管道模型中我们提到了随着HttpContext对象的创建,HttpRunTime会利用HttpApplicationFactory

    1K50

    聊一聊Asp.net过滤器Filter那一些事

    时,就会执行到该方法中 /// 但是,我平时在应用过程中,一般都是在AuthorizeCore根据不同的认证结果,直接做认证后的逻辑处理 /// public...IP白名单,IP黑名单验证 请求频率验证等等 // 说到这而,还有一点需要注意,如果我们选择的是全局注册该过滤器,那么如果有的页面根本不需要权限认证,比如登录页面,那么我们可以给不需要权限的认证的控制器或者...// 在这里面既能获取到未经处理的异常信息,也能获取到请求信息 // 在此可以根据实际项目需要做相应的逻辑处理 // 下面简单的列举了几个关键信息获取方式...// 在这里面既能获取到未经处理的异常信息,也能获取到请求信息 // 在此可以根据实际项目需要做相应的逻辑处理 // 下面简单的列举了几个关键信息获取方式...我自己写了一个练习DEMO,里面会有每一种情况的处理说明。有兴趣的可以取下载下来看一看,谢谢。

    1.3K20

    .net core 利用中间件处理常见的网站功能 包括 session、routers、重定向、重写和文件下载

    每个组件选择是否将请求传递给流水线中的下一个组件,并且可以在管道中调用下一个组件之前和之后执行某些操作。请求代理用于构建请求管道。请求委托处理每个HTTP请求。 ?...: HttpContext.Session.SetString(Guid.NewGuid().ToString(),Guid.NewGuid().ToString()); 执行控制器就可以看到效果...session的添加如果成功的话,执行完添加session的控制器,再执行 localhost:5000/session就能看到当前的session值 注:这里的router只是一部分,还包含mvc下的...任意字符/任意字符 ,满足条件就执行 xmlOption/Get/$2.$1 这个控制器【$1,$2是占位符】,下同 添加下载的控制器 using Microsoft.AspNetCore.Mvc;...so.RequestPath="/sf";//这里的/sf就是程序中映射的路径 app.UseStaticFiles(so); 到这步就可以执行对应文件的下载了

    62420

    (译)创建.NET Core多租户应用程序-租户解析

    ,以便可以解析它们 重新注册一些中间件,以便您可以HttpContext在请求管道中将租户信息添加到当前信息中,从而使下游消费者可以使用它 注册服务 现在,我们有一个获取租户的策略,以及一个使租户脱离的位置...此时,您将能够将存储或解析方案策略注入到控制器中,但这有点低级。您不想在要访问租户的任何地方都必须执行这些解决步骤。接下来,让我们创建一个服务以允许我们访问当前的租户对象。...接下来,我们可以添加一些中间件,以将当前的Tenant注入到HttpContext中,这意味着我们可以在可以访问HttpContext的任何地方获取Tenant,从而更加方便。...context) { return context.GetTenant(); } } 现在,我们可以修改我们的Values控制器,演示使用当前的HttpContext...我们还编写了自定义中间件,将当前的租户信息注入到HttpContext中,以便下游中间件可以轻松访问它,并创建了一个不错的扩展方法,以便您可以像HttpContext.GetTenant()一样轻松地获取当前的

    2.5K61

    ASP.NET Core依赖注入深入讨论

    您可以使用GetService()或GetRequiredService()来获取在服务集合中注册的依赖项。...services.AddSingleton(dataService); services.AddSingleton(dataService); 如果组件具有依赖关系,则可以从服务集合构建服务提供者并从中获取必要的依赖项...第三个通过使用HttpContext请求上下文的RequestServices属性的GetService()方法来获取可选的依赖项。...您也可以通过在特定的Action上添加参数,并使用FromServicesAttribute特性对其进行装饰来注入所需的服务,这会指示MVC Core从服务集合中获取它,而不是尝试对其进行模型绑定。...HttpContext 我已经多次提到过HttpContext。如果您想访问控制器/视图/视图组件之外的HttpContext,那怎么办?例如,要访问当前登录用户的声明?

    2.2K10

    ASP.NET Core 中的速率限制中间件的使用

    从倒退一个窗口的过期时间段(当前段之前的 n 个段)获取的请求会添加到当前的段。 我们将倒退一个窗口最近过期时间段称为“过期的段”。...其余请求数的计算方式为可用请求数减去处理的请求数和回收的请求数。每次的请求数沿着蓝色对角线移动。从时间 30 开始,从过期时间段获得的请求会再次添加到请求数限制中,如红色线条所示。...时间可用获取的请求数从过期段回收的请求数结存请求数01002008010803005020504001030103020040010302050201040506050353045 services.AddRateLimiter...应用速率限制策略可以全局应用速率限制策略,或者将其应用于特定的控制器或动作:全局配置app.MapControllers().RequireRateLimiting("fixed");应用于特定的控制器...欢迎关注我的公众号:Net分享

    8010

    ASP.NET Core WebAPI实现本地化(单资源文件)

    RequestLocalizationOptions>>(); app.UseRequestLocalization(localizeOptions.Value); RequestCultureProvider 它使用简单的委托来确定当前的本地化区域性...,当然我们还可以通过RequestCultureProvider自定义源的请求区域信息比如说配置文件或者数据库都是可以的.或者说我们可以选用默认的一些方式让我们去获取到当前区域....ASP.NET Core 本地化默认向我们提供了四个方式,可用于确定正在执行的请求的当前区域性: QueryStringRequestCultureProvider CookieRequestCultureProvider...AcceptLanguageHeaderRequestCultureProvider CustomRequestCultureProvider 如下所示我将通过路由的方式,去确定当前区域 public...注入IStringLocalizer,StringLocalizer将通过传递的共享资源(T)的值映射到资源文件,然后将本地化根据字符串的名称从资源文件返回响应的值 [Route("{culture

    1.3K20
    领券