MVC3,ASP.NET 4 - 资源找不到。

4
我有VS2010、MVC3和ASP.NET 4.0以及一个简单的测试mvc应用程序。问题是我仍然不断收到错误消息:

服务器错误'/'应用程序。

无法找到资源。 描述:HTTP 404。您正在查找的资源(或其某个依赖项)可能已经被移除,名称已更改或暂时不可用。请检查以下URL,并确保拼写正确。

请求的URL:/Pizzas/Pizza

这是我的简单控制器:

public class PizzasController : Controller
{
public ActionResult Pizza()
{
var pizzas = new Pizza();
return View("Pizza", pizza);
}

}

这是我 global.asax 文件的一部分:

    public static void RegisterRoutes(RouteCollection routes)
    {
        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
        routes.IgnoreRoute("{Scripts}/{*pathInfo}");

        routes.MapRoute(
          "Pizza_1",
          "Pizzas/Pizza",
          new { controller = "Pizzas", action = "Pizza"}

      );

        routes.MapRoute(
            "Pizzas_2", // Route name
            "{controller}/{action}", // URL with parameters
            new { controller = "Pizzas", action = "Pizza" } // Parameter defaults
        );

        }

我正在尝试通过以下方式从pizza.cshtml调用此操作:

@Html.ActionLink("Test", "Pizza", "Pizzas");

当两个路由都没有注释时,执行流程会进入Pizza_2路由并且不会出现问题。但是如果我注释掉Pizza_2,那么它就会进入Pizza_1路由并且在未到达操作方法时出现错误。 该应用程序运行于ASP.NET开发服务器(而非IIS)。 我注意到只有在没有指定完整URL的情况下,它才能使用Pizza_2路由: http://localhost:2893 但是如果输入完整的URL,例如: http://localhost:2893/Pizzas/Pizza 则会再次出现错误。

当您注释掉Pizzas_1并取消注释Pizzas_2,然后打开http://localhost:2893/Pizzas/Pizza时会发生什么?首先验证这是否在没有自定义路由的情况下正常工作。 - Goran Obradovic
当只有Pizza_2可用时,它可以工作,但不能使用自定义路由。Html.ActionLink可以工作,但如果使用完整的自定义路由,则会失败。 - ttm
2个回答

5

1
我也遇到同样的错误:routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); - Colin Asquith

0

我曾经遇到过同样的问题,但当我查看项目的警告列表时,发现我引用了OracleDataAcces.dll。在重新构建项目时,由于安全问题,该dll无法被删除。然后我右键单击bin文件夹,只给了只读访问权限,然后取消选中并再次重建。

之后页面就可以正常加载了。希望这可以解决问题。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接