1

「AuditoriaController」というコントローラーがあり、_Layout.vbhtml には、このコントローラーへのアクション リンクがあります。

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

ビューでこのリンクをクリックすると、次のエラー メッセージが表示されます。

「/」アプリケーションでサーバー エラーが発生しました。

リソースが見つかりません。

説明: HTTP 404。探しているリソース (またはその依存関係の 1 つ) は、削除されたか、名前が変更されたか、一時的に利用できない可能性があります。次の 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

他のコントローラではこの問題は発生しません。この URL: localhost:4802/Auditoria/Index を使用すると、エラーは発生しません。

誰でも私を助けることができますか?

4

5 に答える 5

3

コントローラのクラス名が期待どおりでない場合は、404が返されます。

「Home」のデフォルトクラスの名前を「Home1」に変更すると、まったく同じエラーが表示されます。タイプミスがないことを確認します...それはほぼ確実です。

于 2013-01-30T04:32:13.277 に答える
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 に答える