我有一个新的MVC 4.0解决方案,使用VS2012 Web Express和IIS Express从头开始创建。 正如磁贴所说,我更改了web.config并在中添加了以下内容:

<customErrors defaultRedirect="Errors/GenericError.html" mode="On">
    <error statusCode="404" redirect="Errors/Error404.html"/>
</customErrors>

基本上,当我在控制器中遇到异常时,默认的MVC error.cshtml将显示错误,而不是我的自定义页面GenericError.html。

如果我转到一个不存在的URL,则我的Error404.html可以正确显示,但不适用于一般情况。

有什么想法可以改变这种行为吗?

===============>>#1 票数:2 已采纳

听起来好像您的全局过滤器中没有error属性。 在MVC 4项目中,您应该能够搜索为您生成的类FilterConfig

public class FilterConfig
{
    public static void RegisterGlobalFilters(GlobalFilterCollection filters)
    {
        filters.Add(new HandleErrorAttribute());
    }
}

更新:

HandleErrorAttribute全局过滤器用于MVC管道中发生的错误,例如您提到的控制器中的错误。

web.configcustomErrors元素用于其他所有内容。 HandleErrorAttribute将不接受您输入到customErrorsdefaultRedirect属性中的值。

HandleError过滤器将查找您在生成的项目shared\\Error.cshtml应该具有的共享视图。 您可以通过在属性上设置属性来将其指向其他视图。

例如,假设我们在Shared\\Errors\\CustomError.cshtml下创建一个新视图,那么您可以像这样注册过滤器:

filters.Add(new HandleErrorAttribute(){View = "Errors/CustomError"});

  ask by Jay translate from so

未解决问题?本站智能推荐: