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

时间:2011-09-21 21:46:42

标签: asp.net-mvc-3

我有VS2010,MVC3和ASP.NET 4.0,带有一个简单的测试mvc应用程序。问题是我仍然一直在收到错误:

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

无法找到资源。 说明:HTTP 404.您要查找的资源(或其中一个依赖项)可能已被删除,名称已更改或暂时不可用。请查看以下网址,确保拼写正确。

请求的网址:/ 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并且在没有进入action方法的情况下会发生错误。 该应用程序在ASP.NET开发服务器(而不是IIS)上运行。 我注意到只有在没有指定完整网址时才能使用Pizza_2路由: http://localhost:2893

但是如果输入这样的完整网址: http://localhost:2893/Pizzas/Pizza

再次发生错误。

2 个答案:

答案 0 :(得分:5)

删除

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

根据http://msdn.microsoft.com/en-us/library/cc668201.aspx#url_patterns {Scripts}被解析为参数。

如果要对脚本执行passthrough,则应使用

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

答案 1 :(得分:0)

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

之后页面加载没有任何问题。希望这可以解决它。