【发布时间】:2011-09-21 21:46:42
【问题描述】:
我有 VS2010、MVC3 和 ASP.NET 4.0 以及一个简单的测试 mvc 应用程序。问题是我仍然不断收到错误:
“/”应用程序中的服务器错误。
找不到资源。 说明:HTTP 404。您正在查找的资源(或其依赖项之一)可能已被删除、名称已更改或暂时不可用。请查看以下 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
但是如果像这样输入完整的网址: http://localhost:2893/Pizzas/Pizza
错误再次出现。
【问题讨论】:
-
当您评论 Pizzas_1 和 ucomment Pizzas_2,然后打开 localhost:2893/Pizzas/Pizza 时会发生什么?首先验证这在没有自定义路由的情况下是否有效。
-
只有 Pizza_2 可用时,它可以工作,但不适用于自定义路线。 Html.ActionLink 有效,但如果使用完整的自定义路由则失败
标签: asp.net-mvc-3