1

我正在编写一个MVC 5互联网应用程序,并且遇到错误问题。MVC 5错误页面不显示

当输入一些无效的View数据时,出现与显示的错误页面相关的错误。

我输入以下内容:

<html>test</html> 

在我Global.asax文件,我有以下几点:

protected void Application_Error(object sender, EventArgs e) 

这是Application_Error函数的错误:

Message = "The controller for path '/Error/' was not found or does not implement IController." 

在我的Shared视图文件夹中,我有一个错误页面cal导致Error.cshtml

下面是Error.cshtml代码:我为什么会收到错误

@model System.Web.Mvc.HandleErrorInfo 

@{ 
    if (TempData["UITitle"] != null) 
    { 
     ViewBag.Title = @TempData["UITitle"]; 
    } 
    else 
    { 
     ViewBag.Title = "Error";  
    } 
} 

<h2 class="text-danger"> 
    @if (TempData["UIHeading"] != null) 
    { 
     @TempData["UIHeading"]; 
    } 
    else 
    { 
     <p>Error</p> 
    } 
</h2> 

<p> 
    @if (TempData["UIMessage"] != null) 
    { 
     @TempData["UIMessage"]; 
    } 
    else 
    { 
     if (Model != null) 
     { 
      @Model.Exception.Message 
     } 
     else 
     { 
      <p>Error</p> 
     } 
    } 
</p> 

Message = "The controller for path '/Error/' was not found or does not implement IController." 

在此先感谢。

编辑

我已经添加在controller以下ActionResult

public async Task<ActionResult> TestError() 
{ 
    return View("Error"); 
} 

的错误页面显示正确。

此外,我有ELMAH与异常的电子邮件记录安装。

EDIT2

我认为这个问题是在我的web.config。

我在web.config如下:

<customErrors mode="On" defaultRedirect="~/Error/"> 
</customErrors> 

每当发生错误时,我想的Error.cshtml将要显示的是在Shared文件夹中。我猜测Error.cshtml找不到,因为它在Shared文件夹中。

我该如何做到这一点?

+0

创建在控制器的行动,并呼吁从操作方法返回了这一观点。你能不能请你发表你是怎么称呼这个错误页面的? – 2015-03-03 04:50:36

+0

我已经做了,你已经问过了,正在显示错误页面。 – user3736648 2015-03-03 04:55:36

+0

所以它的工作权利? – 2015-03-03 04:56:34

回答

0

您的错误消息表明您需要一个对应于URL =>'/ Error'的操作方法。

此操作应返回View("Error.cshtml");(使用正确的路径)。

如果您的重定向是在网上。配置文件,然后尝试以下方法:

<customErrors mode="On" defaultRedirect="~/Views/Shared/Error.cshtml"> 
</customErrors> 
+0

你可以看看我的编辑? – user3736648 2015-03-03 05:27:22

+0

我收到以下错误:{“路径‘/Views/Shared/Error.cshtml’没有被发现。”} – user3736648 2015-03-03 05:46:42

+0

@ user3736648是在浏览/共享文件夹中的文件Error.cshtml? – 2015-03-03 05:51:51

0

添加下面你Global.asax

P.S: Change the name of the contr4oller and action as per your declarations and other mods as per ur need

Sub Application_Error(ByVal sender As Object, ByVal e As EventArgs) 
     Dim exception As Exception = Server.GetLastError() 
     If exception Is Nothing Then 
      Exit Sub 
     End If 
     Dim httpException As HttpException = TryCast(exception, HttpException) 
     If httpException IsNot Nothing Then 

      Dim routeData As New RouteData() 
      routeData.Values.Add("controller", "Error") 
      Select Case httpException.GetHttpCode() 
       Case 403, 404 
        ' page not found 
        routeData.Values.Add("action", "errorpage404") 
       Case Else 
        routeData.Values.Add("action", "errorpage40x) 
      End Select 
      If httpException.GetHttpCode() = 500 Then 
       'TODO 
       'Logging 
      End If 

      'routeData.Values.Add("error", exception) 
      ' clear error on server 
      Response.Clear() 
      Server.ClearError() 
      Dim errorController As IController = New ErrorController() 
      errorController.Execute(New RequestContext(New HttpContextWrapper(Context), routeData)) 
     End If 
    End Sub