首页
学习
活动
专区
工具
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 总结 到目前为止,实战系列也有了几篇,很多小伙伴问我能提供一下源码?当然,能呀。不过不是现在,容留个谜底。当主要框架功能完成之后,就会给小伙伴们发代码

    65730

    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。...第一个是由于控制器构造函数中不能直接使用ControllerBaseHttpContext属性,所以必须要通过注入IHttpContextAccessor对象来获取,貌似问题又回到原点。...,DefaultControllerActivator中控制器实例是TypeActivatorCache获取,而自己激活器是DI获取,所以必须额外把系统所有控制器注册到DI中,封装成如下扩展方法

    1.2K20

    【愚公系列】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.控制器中使用 /

    42310

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

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

    1K21

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

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

    2.2K10

    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初始化过程中,...还有一种映射方法,我们可以调用当前HttpContextRemapHandler方法将一个HttpHandler对象映射到当前HTTP请求。...圈红部分,每当RemapHandler执行时,它会将当前方法所在事件(在ASP,NET管道模型中我们提到了随着HttpContext对象创建,HttpRunTime会利用HttpApplicationFactory

    2.2K91

    ASP.NET三剑客 HttpApplication HttpModule HttpHandler 解析

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

    99450

    聊一聊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); 到这步就可以执行对应文件下载了

    60820

    (译)创建.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 WebAPI实现本地化(单资源文件)

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

    1.2K20

    吐槽一下Abp用户和租户管理模块

    Action中使用 HttpContext.User.Identity 获取声明身份信息。...ICurrentUser 封装了身份信息,用于获取有关当前活动用户信息,已经被Abp框架默认注入。...你会在ApplicationSerive、 AbpController看到属性CurrentUser, 在Abp服务和控制器中是可以即时使用。 --- --- 2....Abp用户、租户管理 AbpICurrentUser获取不到常规HttpContext.User信息,是因为使用了特定封装,封装方式不能苟同: 以下是 ICurrentUser 接口基本属性:...new关键字显式隐藏基类继承成员 这样我们既可以使用 Abp框架其他能力,利用new关键词我们也刻意隐藏了框架原有的ICurrentUser属性, 其他同事也不需要额外认知成本就可以开心地像往常一样使用

    1.4K10
    领券