0
我在.NET 4.0 MVC 3应用程序有与该开始了如下动作的ErrorController
:什么设置此MVC3操作方法的默认参数值?
public ActionResult Index(Exception error, int? functionId, string viewMessage)
{
if (error == null && string.IsNullOrEmpty(viewMessage))
return RedirectPermanent(_DefaultErrorHtm);
// ...
}
我设置此操作的自定义路线,但是当我要求的“http://本地主机/错误“,error
参数不是null
,但始终是System.Exception
没有堆栈跟踪。什么提供了这个默认值,MVC 3或.NET 4.0?我怎样才能防止它?
此操作的预期用途是我的自定义错误处理程序替换路径字典,将控制器设置为“错误”并将操作设置为“索引”并提供正确的参数,并调用ErrorController.Execute
。有没有更好的方法来防止用户直接请求这条路线? ChildActionOnlyAttribute
不起作用,因为替换路由字典并重新执行该控件将使其成为父操作。
更新:我通过创建一个自定义路由来提供默认异常,我的应用测试而不是测试null。这导致我怀疑它是提供System.Exception
开始的MVC 3。
我认为这是一个胜利者,但它不会工作,因为我最后一段。当我清除路由字典并将其发送到错误控制器时,它不再是一个孩子,因此应用此属性会产生一个带有消息“操作'索引'仅可由子请求访问的InvalidOperationException”。 – flipdoubt 2012-03-08 15:52:36