我是一个对ASP.NET MVC4非常新的学习者,正在学习相关课程。我在错误处理方面遇到了一些小问题。当教练在web.config文件中的标签下添加时,他被重定向到友好的错误页面(而不是堆栈跟踪)。
当我做出这个改变时,我仍然被重定向到"黄色死亡页面"的堆栈跟踪。
由于我正在努力尽可能深入地理解这个问题,所以我想在这里问一下。为什么把打开可以让教练成功而我失败了呢?
以下是我的标签:
最后,是我的FilterConfig.cs文件。
当我做出这个改变时,我仍然被重定向到"黄色死亡页面"的堆栈跟踪。
由于我正在努力尽可能深入地理解这个问题,所以我想在这里问一下。为什么把打开可以让教练成功而我失败了呢?
以下是我的标签:
<system.web>
<customErrors mode="On"/>
<httpHandlers>
<add path="*" verb="*" type="System.Web.HttpNotFoundHandler"/>
</httpHandlers>
<pages
validateRequest="false"
pageParserFilterType="System.Web.Mvc.ViewTypeParserFilter, System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"
pageBaseType="System.Web.Mvc.ViewPage, System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"
userControlBaseType="System.Web.Mvc.ViewUserControl, System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
<controls>
<add assembly="System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" namespace="System.Web.Mvc" tagPrefix="mvc" />
</controls>
</pages>
</system.web>
这是我的Global.asax.cs代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Http;
using System.Web.Mvc;
using System.Web.Optimization;
using System.Web.Routing;
namespace OdeToFood
{
// Note: For instructions on enabling IIS6 or IIS7 classic mode,
// visit http://go.microsoft.com/?LinkId=9394801
public class MvcApplication : System.Web.HttpApplication
{
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
WebApiConfig.Register(GlobalConfiguration.Configuration);
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
BundleConfig.RegisterBundles(BundleTable.Bundles);
AuthConfig.RegisterAuth();
}
}
}
最后,是我的FilterConfig.cs文件。
using System.Web;
using System.Web.Mvc;
namespace OdeToFood
{
public class FilterConfig
{
public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
filters.Add(new HandleErrorAttribute());
}
}
}
我目前使用的是默认视图Error.cshtml。
我还尝试过以下方法:
<customErrors mode="On" defaultRedirect="Error"/>
以及
<customErrors mode="On" defaultRedirect="~/Error.cshtml"/>
我正在使用以下代码来强制出错:
public class CuisineController : Controller
{
//
// GET: /Cuisine/
public ActionResult Search(string name = "french")
{
throw new Exception("Something terrible has happened");
var message = Server.HtmlEncode(name);
return Content(message);
}
}
}
您可以看出来,我非常新手,如果这是一个琐碎的问题,请原谅,但我尽力学习。
defaultRedirect="~/Common/Error"
(不包括cshtml扩展名)。 - Win