2012-03-07 76 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

相關問題