部署的应用程序中找不到MVC区域视图。 HTTP 404错误

时间:2013-07-03 16:50:45

标签: asp.net-mvc-4 asp.net-mvc-routing asp.net-mvc-areas

我希望有人可以直接解决我与MVC领域的问题。我知道之前已经问过这个问题,但我无法在代码中看到错误。在我继承的Intranet应用程序中,我在现有的Administration Area控制器和相应的View中创建了另一个ActionResult方法。

ActionResult AllCurrentAttributes()

在VS 2012 IDE中运行应用程序时,它不需要参数,可以。但是,部署的应用程序会抛出错误:HTTP 404.您要查找的资源(或其中一个依赖项)可能已被删除,名称已更改或暂时不可用。 同一控制器中的其他ActionResult方法可以完美地工作。

所有其他工作路由都在AdministrationAreaRegistration.cs中注册。

public override void RegisterArea(AreaRegistrationContext context)
{
  context.MapRoute(
    "RA",
    "Administration/RA/{raId}",
    new { area = "Administration", controller = "RA", action = "View" },
    new { riskAssessmentId = @"\d+" },
    new[] { "LargeApp.UI.Web.Areas.Administration.Controllers" }
    );

  context.MapRoute(
    "RA Work",
    "Administration/ RA /Work/{raId}",
    new { area = "Administration", controller = " RA ", action = "Work" },
    new { riskAssessmentId = @"\d+" },
    new[] { " LargeApp.UI.Web.Areas.Administration.Controllers" }
    );

  context.MapRoute(
    "All Current Attributes",
    "Administration/ RA /AllCurrentAttributes/",
    new { area = "Administration", controller = " RA ", action = "AllCurrentAttributes" },
    new[] { " LargeApp.UI.Web.Areas.Administration.Controllers" }
    );

  context.MapRoute(
    "Administration Default",
    "Administration/{controller}/{action}/{id}",
    new { area = "Administration", controller = "Home", action = "Index", id = UrlParameter.Optional },
    new[] { " LargeApp.UI.Web.Areas.Administration.Controllers" }
    );
}

Index.cshtml中的ActionLink是为位于管理区域中的Home控制器创建的视图,如下所示:

@Html.ActionLink("All Current Attributes", "AllCurrentAttributes", "RA")

视图位于管理区域内的RA文件夹中,名为AllCurrentAttributes.cshtml。 Index.cshtml中引用相同RA控制器的其他ActionLink可以完美地工作。

@Html.ActionLink("Work Rules", "WorkIndex", "RA ")
@Html.Action("List", "RA ") 

在Global.asax中,在调用RegisterRoutes(RouteCollection路由)之前,在Application_Start中调用AreaRegistration.RegisterAllAreas()。在RegisterRoutes中,默认路由代码如下所示:

routes.MapRoute(
    "Default", 
    "{controller}/{action}/{id}", 
    new { controller = "Home", action = "Index", id = UrlParameter.Optional }, 
    new[] { "LargeApp.UI.Web.Controllers" } 
);

有没有人知道如何解决404错误?

谢谢!

2 个答案:

答案 0 :(得分:0)

您是否可以检查在部署的IIS上是否创建了“Regions”文件夹?

答案 1 :(得分:0)

我不明白为什么@ Html.ActionLink不起作用。但为了保持事物的发展,我使用了另一种链接:

@Html.RouteLink("All Current Attributes", "AllCurrentAttributes", "RA")

Chad Moran在此StackOverflow网址上简洁地解释了这两种链接之间的区别:

What's the difference between RouteLink and ActionLink in ASP.NET MVC?

使用@RoutLink我可以指定路线,而不是依赖路线的模式匹配。