我有VS2010,MVC3和ASP.NET 4.0,带有一个简单的测试mvc应用程序。问题是我仍然一直在收到错误:
2>'/'应用程序中的服务器错误。无法找到资源。 说明: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
再次发生错误。
答案 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文件夹,它只给了只读访问权限,然后我取消选择并再次重建。
之后页面加载没有任何问题。希望这可以解决它。