2012-03-07 82 views
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。

回答

1

关于第二个问题:将ChildActionOnlyAttribute放在此操作的顶部 - 您将无法从浏览器请求它。

+0

我认为这是一个胜利者,但它不会工作,因为我最后一段。当我清除路由字典并将其发送到错误控制器时,它不再是一个孩子,因此应用此属性会产生一个带有消息“操作'索引'仅可由子请求访问的InvalidOperationException”。 – flipdoubt 2012-03-08 15:52:36