在ASP.NET MVC中,我非常喜欢它自动尝试从请求值填充Action参数的功能.
它使很多东西看起来非常干净,我的表格层次模型可以轻松地在那里旅行并通过电线返回.
但是它有一个恼人的问题.缺少非可空参数的自动异常.并不是框架错了.我理解这背后的原因,但是:
在很多情况下,我有一个int参数作为输入,其中请求一个特定对象(例如,产品的详细信息页面).
该参数是一个GET参数,因此它在url中可见,并且很容易更改.
如果用户更改了URL中的参数,则Web服务器会使用错误页面进行响应,并记录错误等.
这种错误应该在应用程序中很好地处理,我不需要用错误污染我的日志,对于这些情况也是404错误更合适恕我直言,因为没有标识符参数"无法找到资源".
我有一些关于如何避免这种情况的想法,但我想要一些透明的东西在一个地方处理它.
到目前为止,我所做的就是制作参数int?
.
不是很透明,我需要ID.HasValue
到处检查并明确抛出404.这污染了Action逻辑.
解决这个问题的最佳地点是什么?
编辑:
我还想指出,尽管抛出一个HttpException(404,"")
仍然是一个例外,但由于浏览器搜索favicon等等,爬虫对恶意网址提出了大量请求,所有我的日志记录,警报等都是相应配置的.