Asp.net 未调用自定义错误页

Asp.net 未调用自定义错误页,asp.net,asp.net-mvc,asp.net-mvc-4,Asp.net,Asp.net Mvc,Asp.net Mvc 4,我需要在MVC4中实现我自己的自定义错误页面。基本上,当用户试图查看任何不存在productID的产品的详细信息时,我需要这个自定义错误页面 我创建了自己的自定义错误页面NotFound.aspx 本页的内部内容是: <%@ Page Language="C#" MasterPageFile="~/Views/Shared/Simple.Master" Inherits="System.Web.Mvc.ViewPage<System.Web.Mvc.HandleErrorInfo&

我需要在MVC4中实现我自己的自定义错误页面。基本上,当用户试图查看任何不存在productID的产品的
详细信息时,我需要这个自定义错误页面

我创建了自己的自定义错误页面
NotFound.aspx

本页的内部内容是:

<%@ Page Language="C#" MasterPageFile="~/Views/Shared/Simple.Master" 
Inherits="System.Web.Mvc.ViewPage<System.Web.Mvc.HandleErrorInfo>" %> 
<asp:Content ID="errorTitle" ContentPlaceHolderID="TitleContent" runat="server"> 
Error 
</asp:Content> 
<asp:Content ID="errorContent" ContentPlaceHolderID="MainContent" runat="server"> 
<h2> 
Sorry, you requested a product that doesn't exist. Make sure you
requested a valid ProductID 
</h2> 
</asp:Content>
问题是,始终调用默认视图:
Views/Shared/Error.aspx
,而不是新的自定义错误页面。有什么想法吗?

试试这个(但我不确定这段代码是否能在MVC中使用)。将此代码粘贴到web.config文件brlow system.web的配置部分

 <customErrors mode="On" defaultRedirect="ErrorPage.aspx">
    </customErrors>
    <compilation debug="true" targetFramework="4.0">

确保您的“notfound”操作和“detail”操作在同一控制器中。否则,您应该指定控制器名称,或将notfound.aspx放在共享文件夹下

尝试使用web配置文件中的自定义错误标记,这可能会对您有所帮助

这是样品

<system.web>
   <--- other required may be used here--->     

    <customErrors mode="On" defaultRedirect="ErrorPage.aspx"></customErrors>
  </system.web>

解决方案是my
ProductController
类还需要将
order
属性设置为:

[HandleError(Order=2)] 
public class ProductController : Controller { ... }
这意味着:订单值为2将确保仅在没有订单的情况下应用控制器范围的过滤器 具有更高阶的HandleError筛选器可用

这一切都很完美。我的web.config设置是:

就是这样。根本不需要
defaultRedirect

注意: 我的
HandleError
过滤器最初没有
order
属性

[HandleError] 
public class ProductController : Controller { ... }
当您在没有参数的情况下应用HandleError筛选器时,您正在指定任何异常
由筛选器所涵盖的方法引发将导致使用
视图/Shared/Error.aspx
视图。

CustomErrors模式已启用。否则,如果它已关闭,则即使默认错误页面也不会显示。还有其他想法吗???实际上我对MVC一无所知。它只在共享文件夹下。notfound不是一个动作,只是一个视图。对不起,我以前误解了它!您是否从action方法中抛出Http 404?实际上,如果表达式不是http 500,HandleError将忽略它。也许这就是为什么总是显示默认视图的原因。不起作用。即使我删除了默认重定向属性,它也会将我带到默认错误视图。所以我想它在这里肯定没有什么作用。
[HandleError] 
public class ProductController : Controller { ... }