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