什么设置此MVC3操作方法的默认参数值?

时间:2012-03-07 21:53:10

标签: asp.net-mvc-3 .net-4.0 asp.net-mvc-routing

我在.NET 4.0上的MVC 3应用程序有一个ErrorController,其操作开始时如下:

public ActionResult Index(Exception error, int? functionId, string viewMessage)
{
   if (error == null && string.IsNullOrEmpty(viewMessage))
      return RedirectPermanent(_DefaultErrorHtm);
   // ...
}

我没有为此操作设置自定义路由,但是当我请求“http:// localhost / error”时,error参数不是null,但始终是System.Exception,但没有堆栈跟踪。什么提供此默认值,MVC 3或.NET 4.0?我该如何预防?

此操作的预期用途是我的自定义错误处理程序替换路由字典,将控制器设置为“错误”,将操作设置为“索引”并提供正确的参数,并调用ErrorController.Execute。有没有更好的方法来阻止用户直接请求此路由? ChildActionOnlyAttribute不起作用,因为替换路由字典并重新执行控制会使其成为父操作。

更新:我通过创建一个自定义路由来解决这个问题,该路由提供了我的应用测试的默认异常,而不是测试null。这让我怀疑是MVC 3开始提供System.Exception

1 个答案:

答案 0 :(得分:1)

关于第二个问题:将ChildActionOnlyAttribute置于此操作之上 - 您将无法从浏览器中请求它。