NonAction解释

博客指出NonAction并非真正的Action,而是一个普通方法,为理解相关概念提供了关键信息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

NonAction表示它不是一个真正的Action,而是一个普通方法。

ASP.NET Core 中,如果你想要防止某些未被 `HttpClient` 或其他 HTTP 相关特性的方法被自动注册到依赖注入 (DI) 容器中,可以采取以下策略: 1. **标记法**:在方法上添加 `[NonAction]` 属性。这告诉 ASP.NET Core 不应该将这个方法视为控制器动作,也不会自动将其注册到路由中。 ```csharp [ApiController] public class MyController : ControllerBase { [HttpGet, NonAction] // 添加 NonAction 标记 public void NonHttpMethod() => /* ... */ } ``` 2. **手动注册**:对于那些仅作为服务使用的非HTTP方法,可以直接通过构造函数注入到需要的地方,而不是让它由 DI 注册。 ```csharp public class MyClass { private readonly IMyService _myService; // 注入所需的服务 public MyClass(IMyService myService) { _myService = myService; } public void CallNonHttpMethod() { _myService.MyNonHttpMethod(); } } ``` 3. **配置项**:在 `Startup.cs` 的 `ConfigureServices` 配置方法中,你可以明确地排除某个类型或方法: ```csharp services.TryAddSingleton<MyService>(options => { // 如果你想阻止 MyService 类中的某个方法注册,可以检查其属性或条件 if (!typeof(MyService).GetMethod("NonHttpMethod").IsDefined(typeof(HttpAttribute), true)) { throw new ArgumentException("NonHttpMethod is not allowed to be registered."); } }); ``` 在这个例子中,如果 `MyService` 类有一个名为 `NonHttpMethod` 的方法,并且它没有被 Http 特性标记,那么就不会被注册。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值