1

我有一个名为“AuditoriaController”的控制器,在 _Layout.vbhtml 我有一个指向该控制器的操作链接:

<li>@Html.ActionLink("Auditoria", "Index", "Auditoria")</li>

当我在视图中单击此链接时,我收到此错误消息:

“/”应用程序中的服务器错误。

无法找到该资源。

说明:HTTP 404。您要查找的资源(或其依赖项之一)可能已被删除、名称已更改或暂时不可用。请查看以下 URL 并确保其拼写正确。

请求的 URL:/Auditoria/

版本信息:Microsoft .NET Framework 版本:4.0.30319;ASP.NET 版本:4.0.30319.17929

在 AuditoriaController 我有这个代码:

Public Class AuditoriaController
    Inherits System.Web.Mvc.Controller

    '
    ' GET: /Auditoria

    Function Index() As ActionResult
        Return View(AuditoriaDB.GetAllItems())
    End Function
End Class

这是我在 RouteConfig.vb 上的路线

Public Shared Sub RegisterRoutes(ByVal routes As RouteCollection)
    routes.IgnoreRoute("{resource}.axd/{*pathInfo}")

    routes.MapRoute( _
        name:="Default", _
        url:="{controller}/{action}/{id}", _
        defaults:=New With {.controller = "EscalaPrevisao", .action = "Index", .id = UrlParameter.Optional} _
    )
End Sub

用其他控制器不会发生这个问题。如果我使用此网址:localhost:4802/Auditoria/Index,则不会发生错误。

谁能帮我?

4

5 回答 5

3

当控制器类名不是预期的时返回 404。

将“Home”默认类重命名为“Home1”,您将看到完全相同的错误。验证没有错别字......几乎可以保证是这样。

于 2013-01-30T04:32:13.277 回答
2

转至 Web 项目的项目属性页面并选择 Web 选项卡。在开始操作部分,将其设置为特定页面,但将文本框留空。

于 2014-05-08T06:50:57.447 回答
0

尝试在 Global.Asax.cs 的 Application_BeginRequest() 事件中重写 URL

        protected void Application_BeginRequest()
    {
        var originalPath = HttpContext.Current.Request.Path.ToLower();
        if (originalPath.Equals("/"))
        {
            Context.RewritePath("Controller/Action");
        }

    }

不是一个理想的解决方案,但它可以作为临时解决方案。

于 2015-07-14T17:29:43.013 回答
0

我的控制器的命名空间不正确(来自移动文件)。一旦我修复了命名空间,一切都正常了。

于 2015-10-30T15:06:02.610 回答
0

我单击红色突出显示的复选框,一切正常

于 2017-11-03T12:04:26.573 回答