NonAction解释

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

在ASP.NET Core中,当控制器方法没有添加HTTP相关的特性(如HttpGet、HttpPost等),默认情况下,这些方法不会自动映射到路由上,也就是说,它们不会被处理为HTTP请求。如果你不想让这样的方法被公开,但是又不想手动注册它们,可以采取以下策略: 1. **忽略无特性的方法**:你可以创建一个自定义的Attribute,例如`NonActionAttribute`,然后在需要排除的方法上应用这个属性。通过配置中间件或者全局属性,可以告诉ASP.NET Core将拥有该属性的方法视为非动作方法,而不是注册路由。 ```csharp [AttributeUsage(AttributeTargets.Method)] public class NonActionAttribute : Attribute { } // 使用 NonActionAttribute 的方法示例 [HttpGet] [NonAction] // 如果不希望此方法参与路由,添加此属性 public IActionResult MyUnmappedMethod() { //... } ``` 2. **使用`ControllersNamespaceIgnore`设置**:如果你的应用有一个特定的控制器命名空间,你想在那里禁用所有未标记的HTTP方法,可以在Startup.cs中的`ConfigureServices`方法中添加这个选项,如下: ```csharp services.AddControllers(options => { options.Filters.AddFilterForType<NonActionAttribute>(); options.ControllersNamespaceIgnore = "YourNamespace"; }); ``` 这会告诉框架,来自指定命名空间的所有控制器方法都将被视为未被HTTP特性标记的。 3. **手动注册非动作方法**:虽然不是推荐做法,但如果你确实想在应用程序生命周期中管理某些方法,可以选择在需要时显式地添加到HTTP管道(Middleware pipeline)。 总之,在不希望方法被注册的情况下,你可以利用特性标记和自定义属性来控制方法的行为,使其保持私密。如果你有其他关于ASP.NET Core的疑问,欢迎提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值