Asp.net mvc 3 MVC3,ASP.NET 4-找不到资源。

Asp.net mvc 3 MVC3,ASP.NET 4-找不到资源。,asp.net-mvc-3,Asp.net Mvc 3,我有VS2010、MVC3和ASP.NET4.0,以及一个简单的测试mvc应用程序。问题是我仍然不断地出错: “/”应用程序中出现服务器错误。 找不到资源。 描述:HTTP404。您正在查找的资源(或其依赖项之一)可能已被删除、名称已更改或暂时不可用。请检查以下URL并确保其拼写正确 请求的URL:/Pizzas/Pizza 这是我的简单控制器: public class PizzasController : Controller { public ActionResult Pizza() {

我有VS2010、MVC3和ASP.NET4.0,以及一个简单的测试mvc应用程序。问题是我仍然不断地出错:

“/”应用程序中出现服务器错误。 找不到资源。 描述:HTTP404。您正在查找的资源(或其依赖项之一)可能已被删除、名称已更改或暂时不可用。请检查以下URL并确保其拼写正确

请求的URL:/Pizzas/Pizza

这是我的简单控制器:

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

}
以下是my 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 route:

但如果按如下方式键入完整url:

错误再次出现。

删除

    routes.IgnoreRoute("{Scripts}/{*pathInfo}");
根据{Scripts}被解析为参数

如果要对脚本执行传递,应该使用

    routes.IgnoreRoute("Scripts/{*pathInfo}");

我也有同样的问题,但当我查看该项目的警告列表时,我发现我有一个对OracleDataAcces.dll的引用。重建项目时,由于安全问题,无法删除该dll。然后我右键单击bin文件夹,它被授予只读访问权限,然后我取消选择该文件夹并再次重建


之后,页面加载没有任何问题。希望这能解决问题。

当您评论Pizzas_1和ucomment Pizzas_2,然后打开时会发生什么?首先验证这在没有自定义路线的情况下是否有效。当只有Pizza_2可用时,它可以工作,但不能用于自定义路线。Html.ActionLink可以工作,但是如果使用完整的自定义路由,那么它会失败。我的错误与:
routes.IgnoreRoute(“{resource}.axd/{*pathInfo}”)