私はカスタムエラーがWeb.configファイルで有効に設定します。MVC 3のカスタムエラーページを表示できません!
<customErrors mode="On"/>
と、のApplication_Startで、これらを置く:
protected void Application_Error(object sender, EventArgs e) {
var ex = Server.GetLastError().GetBaseException();
var routeData = new RouteData();
if (ex.GetType() == typeof(HttpException)) {
var httpException = (HttpException)ex;
var code = httpException.GetHttpCode();
routeData.Values.Add("status", code);
} else {
routeData.Values.Add("status", -1);
}
routeData.Values.Add("action", "Index");
routeData.Values.Add("controller", "Error");
routeData.Values.Add("error", ex);
IController errorController = new Kavand.Web.Controllers.ErrorController();
errorController.Execute(new RequestContext(new HttpContextWrapper(Context), routeData));
}
も私はこのようなエラーコントローラを作成:
public class ErrorController : Kavand.Web.Mvc.Kontroller
{
public ActionResult Index(int status, Exception error) {
Response.StatusCode = status;
HttpStatusCode statuscode = (HttpStatusCode)status;
return View(statuscode);
}
}
エラーが発生したときは、私のカスタム表示ではなく、黄色のページが表示されました!みんなが私を助けてくれる?
protected void Application_Error(object sender, EventArgs e)
{
var ex = Server.GetLastError().GetBaseException();
Server.ClearError(); // <-- that's what you are missing
var routeData = new RouteData();
...
}
はまた、中RegisterGlobalFilters
静的メソッドに追加されHandleErrorAttribute
グローバル属性を除去することが重要である: どうもありがとう、それを取得した後、Application_Error
でエラーをクリアすることを忘れないでください
イエローページのエラーは何ですか?ハンドラには多くのロジックがあり、おそらく別の例外が発生する可能性があります。 –
私はこれがあなたの質問だと知っていますが、私にとっては答えです!このコードをお寄せいただきありがとうございます。 :) – Shion