设置此MVC3操作方法的默认参数值的内容



我在.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?我如何防止它?

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

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

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

最新更新