ASP MVC中无ActionResult的公开方法可被URL访问的原因及阻止方案
问题原因与解决方案
为什么无返回值的公开方法能被URL访问?
ASP.NET MVC的路由系统默认会将控制器中所有公开(public)、参数可通过请求绑定(或无参数)的方法识别为可访问的Action方法,不管方法的返回值类型是什么——哪怕是void,只要符合路由匹配规则(比如/控制器名/方法名),就会被执行。
阻止此类访问的方法
- 将方法的访问修饰符改为非公开(如
private或protected):public class HomeController : Controller { private void MyFunction() { // Do some thing } } - 给方法添加
[NonAction]特性,明确标记该方法不是Action:public class HomeController : Controller { [NonAction] public void MyFunction() { // Do some thing } }
内容的提问来源于stack exchange,提问作者Vương Nguyễn
相关产品推荐
相关产品推荐

