相关疑难解决方法(0)

asp.net mvc 3 handleerror全局过滤器始终显示IIS状态500页

我已经尝试了一切,甚至卸载了asp.net mvc3,我无法让HandleError全局过滤器工作.

我在Global.asax中设置了HandleError过滤器:

 public static void RegisterGlobalFilters(GlobalFilterCollection filters)
 {
     filters.Add(new HandleErrorAttribute());
 }
Run Code Online (Sandbox Code Playgroud)

我也启用了CustomErrors(如果我设置defaultRedirect ="Error"并不重要,我认为这是在文档中因为旧版本的mvc需要):

<customErrors mode="On" />
Run Code Online (Sandbox Code Playgroud)

尝试浏览页面直到错误被引发,你从localhost或使用主机名,在开发服务器或IIS 7.5中,它总是重定向到标准状态500页,而不是我自定义Error.cshtml视图,我已在共享中创建.这是错误视图代码:

@model System.Web.Mvc.HandleErrorInfo

@{
    ViewBag.Title = "Oooops";
}

<h2>Ooops Something really bad happened!</h2>
Run Code Online (Sandbox Code Playgroud)

另外我注意到,如果我创建一个新的ASP.NET MVC3项目,然后选择"Internet Application"模板,并且只是在该项目中启用customErrors,那么HandleError过滤器开始正常工作,但是使用空的MVC3模板却没有.


我想澄清一下,确实我可以在调试时看到正在处理的错误视图,但浏览器始终显示错误500页面.

c# asp.net asp.net-mvc razor asp.net-mvc-3

9
推荐指数
3
解决办法
9492
查看次数

其他错误找到我的Error.cshtml,为什么404错误找不到Error.cshtml?

我是第一次同时处理ASP.NET,MVC 3,Web开发.请耐心等待,因为我知道这个问题已经从不同角度进行了大量讨论.我仍然没有找到我的具体问题的答案:为什么我的应用程序在404发生时找不到我的Error.cshtml文件,当它发现它与其他错误一样好的时候?

(环境:Win 7 64位,IIS7,SQL 2008 Express,VS2010,ASP.NET 4,MVC3,EF v4)

我有一个控制器WorkerController.cs,它正确地从数据库读取和写入.如果我更改数据库名称而不更新我的DbContext,它会给我一个错误.当我将web.config更改为始终显示自定义错误时,显示/Views/Shared/Error.cshtml文件.

没有 FooController.cs文件.如果我去/ Foo,我会得到404错误,正如预期的那样.它告诉我它找不到资源/ Foo.

当我设置customErrors mode ="On"并向/ Foo发出http请求时,我收到404错误,指出无法找到/Error.cshtml.

我正在搜索和阅读讨论使用指定控制器处理错误的各种方法的帖子,但我真的想知道我错过了什么.为什么它会找到其他错误的/Error.cshtml,而不是404错误?

asp.net-mvc-routing http-status-code-404 asp.net-mvc-3

9
推荐指数
1
解决办法
9348
查看次数

返回自定义错误

我设计了一个控制器ErrorController,使用类似Forbiddenor 的方法调用NotFound,因此我可以将以下几行添加到 Web.config 中:

<customErrors mode="On" defaultRedirect="~/Error/Unknown" />
    <error statusCode="404" redirect="~/Error/NotFound" />
    <error statusCode="403" redirect="~/Error/Forbidden" />
</customErrors>
Run Code Online (Sandbox Code Playgroud)

所以现在我希望能够做这样的事情:

public ActionResult Edit(int idObject)
{
    if( user.OnwsObject(idObject) )
    {
        // lets edit
    }
    else
    {
        // ** SEND AN ERROR 403 ***
        // And let ASP.NET MVC with IIS manage that error to send
        // the requester to the Web.config defined error page.
    }
}
Run Code Online (Sandbox Code Playgroud)

问题是我尝试过类似的事情:(A)throw new HttpException(403, "Error description");:导致导致系统崩溃的未处理异常,(B)return HttpStatusResultCode(403, "Error description") …

c# asp.net-mvc iis-7 asp.net-mvc-4

5
推荐指数
2
解决办法
4571
查看次数

MVC HandleError返回错误500并查看错误页面

我正在使用VSC10的MVC 3并试图让[HandleError]工作.我在控制器中创建了一个测试来模拟崩溃,如下所示:

[HandleError]
public ActionResult Crash()
{
    throw new ApplicationException();
}
Run Code Online (Sandbox Code Playgroud)

还进入了web.config并添加了:

<customErrors mode="on" />
Run Code Online (Sandbox Code Playgroud)

如果我从Chrome运行,MVC将返回Shared/Error.aspx中的视图,因此这项工作正常.

如果我从IE 8运行,我得到它友好的错误页面("网站无法显示页面,最有可能的原因:......你可以尝试......").我进入IE工具并关闭"显示友好的HTTP错误消息"并再次运行,IE显示我的Error.aspx视图.显然我无法让用户更改此设置,但至少我知道我的Error.aspx正在返回.

所以我运行Fiddler,当我使浏览器转到我的Crash方法时,它显示即使MVC返回我的Error.aspx视图,它也会返回500结果.这会导致IE认为它有错误并使用友好页面覆盖我的页面.

我认为MVC应该返回结果200与我的Error.aspx页面而不是500.任何人都可以给我一些关于尝试什么的想法?

asp.net-mvc handleerror

3
推荐指数
1
解决办法
2856
查看次数

从Application_Error重定向

如何从中重定向到另一个页面 Application_Error

目前我正在做

Response.Redirect("~/Account/LogOn");
Run Code Online (Sandbox Code Playgroud)

但我想做点什么 RedirectToAction()

c# asp.net-mvc url-redirection

3
推荐指数
1
解决办法
1万
查看次数

HandleError - 如何在错误页面中显示异常消息?

我的基本控制器类上有以下内容,我的其他控制器继承自:

[HandleError(ExceptionType = typeof(NotFoundException), View = "NotFound")]
[HandleError(ExceptionType = typeof(UnauthorisedException), View = "Unauthorised")]
Run Code Online (Sandbox Code Playgroud)

我希望能够将异常消息添加到视图中.例如,当我抛出异常时:

throw new NotFoundException("This record was not found");
Run Code Online (Sandbox Code Playgroud)

我可以以某种方式获取此消息并将其插入NotFound视图.

asp.net-mvc asp.net-mvc-3

2
推荐指数
1
解决办法
6133
查看次数

ASP.NET MVC:在应用程序启动时检查数据库连接

1-有时我的SQL Server因维护而停机,所以当我尝试运行我的ASP.NET MVC应用程序时,我遇到错误的黄色错误屏幕 network-related or instance-specific error occurred while establishing a connection to SQL Server.

由于我不知道ASP.NET MVC中的事件序列,我想知道应该在哪里检查连接,因此我可以将用户重定向到一个视图,通知他/她这种情况(而不是显示此错误页面).我在asp.net论坛上看到了这个答案,但我无法理解如何在里面处理这个问题global.asax.

2-是否可以对每个数据库连接错误进行一些更改,我可以将用户重定向到该信息页面?我的意思是可以为数据库连接错误定义全局异常处理程序吗?

PS我在web.config中的connectionString被命名DefaultConnection.

c# asp.net asp.net-mvc asp.net-mvc-5

2
推荐指数
1
解决办法
2172
查看次数