2011-11-21 39 views
2

我在我的MVC3 web應用程序中實現了一個默認的自定義錯誤頁面,它似乎大部分工作。我可以輸入一個錯誤的URL,並且我的瀏覽器被重定向到一個默認的錯誤頁面,沒有任何問題。但是,當我將HTML標記添加到文本字段(如<br>)中時遇到問題。這會導致500錯誤(內部服務器錯誤)未被重定向到我的默認錯誤頁面。MVC3 CustomError 500當在TextFields中輸入HTML標籤時出現問題

在我的web.config中,我有以下標記。

<customErrors defaultRedirect="/CustomErrors/DefaultError" mode="On"> 
</customErrors> 

我有一個名爲CustomErrors的控制器,名爲DefaultError.cshtml。

​​

當我輸入錯誤的URL斷點我在CustomErrorsController的DefaultError操作方法進入。但是當我輸入<br>到文本字段,如登錄頁面,我看到片狀行爲。 IE或Mozilla顯示默認的瀏覽器錯誤頁面。奇怪的是,當我從我的web.config中刪除customerror屬性時,我得到一個醜陋的頁面,其上的轉儲異常。所以我的自定義錯誤不知何故被引用,但沒有完全實現。

處理自定義錯誤並在文本字段中輸入html標籤的任何想法?

+0

你可以定義一個自定義的動作過濾器,它會在'on_exception'方法內顯示你的錯誤頁面。 – AdrianoRR

+0

我假設on_exception需要進入我的CustomErrorsController。我會給你一個機會,讓你知道我的結果。謝謝 – user1013651

回答

1

感謝阿德里亞諾指出我在正確的方向。我發現這個例子(http://stackoverflow.com/questions/6324368/asp-net-mvc-override-onexception-in-base-controller-keeps-propogating-to-applica)並結束了在我的基地實施OnException控制器,因爲在我的CustomErrorsController中不會發生異常。

protected override void OnException(ExceptionContext filterContext) 
    { 
     filterContext.Result = new ViewResult 
     { 
      ViewName = "/CustomErrors/DefaultError" 
     }; 

     filterContext.ExceptionHandled = true; 
    }