ASP.Net MVC – 资源无法find错误

我对ASP.Net MVC完全陌生。 我刚刚在Visual Studio 2010中创build了一个MVC3项目。视图引擎是razor。 当我刚刚运行应用程序时,它在浏览器中给出了正确的结果。 该URL是http:// localhost:4163 / 。 然后,我将“Set as Start Page”设置为〜\ Views \ Home文件夹中的Index.cshtml。 然后,当我运行该应用程序的URL变成http:// localhost:4148 / Views / Home / Index.cshtml ,它表示无法find资源。 我该如何纠正? URL映射在哪里完成?

Global.asax文件:

using System.Web.Mvc; using System.Web.Routing; namespace TEST { public class MvcApplication : System.Web.HttpApplication { public static void RegisterGlobalFilters(GlobalFilterCollection filters) { filters.Add(new HandleErrorAttribute()); } public static void RegisterRoutes(RouteCollection routes) { routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); routes.MapRoute( "Default", // Route name "{controller}/{action}/{id}", // URL with parameters new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults ); } protected void Application_Start() { AreaRegistration.RegisterAllAreas(); RegisterGlobalFilters(GlobalFilters.Filters); RegisterRoutes(RouteTable.Routes); } } } 

URL映射或“路由”由ASP.NET MVC站点的根目录中的Global.asax处理。

当您单击“设为起始页”时,它会更改项目设置以查找与该应用程序根目录相关的文件。 但在MVC中,到您的索引页面的默认路由实际上是http://localhost:4163/Home/Index – 读取类似这样的内容,以了解路由如何工作。

为了“修复”您的项目,现在正在尝试(和失败)直接导航到视图,右键单击该项目并select“ Properties ”,单击“ Web ”选项卡并select“ Specific Page ”,留空文本框。 现在,当您开始debugging时,应该再次进入主页 – 查看默认路由参数,了解为什么在Global.asax的RegisterRoutes方法

确保你在控制器文件夹中创build了一个HomeController.cs类。

在我遇到类似的问题,我的行动有一个HTTP“POST”属性,但我试图打开页面(默认情况下,它是“GET”)。

所以我不得不创build一个HTTP“GET”版本。

我也得到了相同的html-404错误:

资源无法find。描述:HTTP 404.您正在查找的资源(或其某个依赖项)可能已被删除,名称已更改或暂时不可用。 请检查以下URL并确保拼写正确。

但仔细检查后,我发现我已经把控制器的名字作为Default1Controller而不是把它Default1Controller HomeController 。 当我做了改变和debugging它的工作。 希望它会帮助你,如果你有同样的问题。

按照下面的步骤来运行你的asp.net mvc应用程序。

  • 控制器创build
    右键点击控制器文件夹并添加控制器。 注意 – 不要删除Controller后缀。 它的ASP.NET MVC约定。
    给控制器命名为“DemoController”,你可以在“DemoController”中看到“Index”动作。 当您创build一个控制器时,“索引”是默认的动作。

  • 查看创build
    右键单击“索引”操作名称,并保持默认视图名称,即“索引”,然后单击“添加”button。

  • 路线设置
    打开Global.asax文件,你会看到路由的默认设置映射到“Home”控制器,“Index”操作将其改为“Demo”控制器和“Index”操作。 URL映射是用Global.asax文件编写的。 当你打开Global.asax文件时,你会看到下面的设置:

     routes.MapRoute( "Default", // Route name "{controller}/{action}/{id}", // URL with parameters new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults ); 

    将其更改为:

     routes.MapRoute( "Default", // Route name "{controller}/{action}/{id}", // URL with parameters new { controller = "Demo", action = "Index", id = UrlParameter.Optional } // Parameter defaults ); 

运行你的应用程序,你可以看到你的应用程序在工作。

在asp.net mvc中,你不能使用'set as start page'选项,因为mvc视图不是独立的,就像web表单页面一样。 这只是用于显示模型的模板文件。 他们没有处理http模块。 所有的Web请求都应该通过控制器操作,不能直接请求视图。

令人难以置信的是,我不小心从控制器中删除了公共关键字!

在这里输入图像说明

我想这将帮助正是没有其他人,但你永远不知道…

那么你不能在asp.net mvc中设置默认页面。
转到global.asax.cs并查看路由的定义。 默认path指向Index方法HomeController。
我会更好地观看一些关于asp.net mvc的短片,或者尝试find书呆子晚餐教程 ,这会让你很快熟悉这个框架。

我认为关于教程的最佳答案已经作为这个问题的答案提供了:

ASP.NET MVC快速教程

前段时间我在使用VS 2012的时候遇到过类似的问题。通过单击Build> Rebuild来重build应用程序。

如果您使用的是IIS Express。 这可能是你打开另一个项目,使用相同的虚拟目录。 当你打开第二个解决schemeVS重新映射到另一个位置的IIS目录。 因此,不能解决不同的问题。 我有同样的错误作为主题首发。

修复:closuresVS Studio的所有实例。 打开VS与您正在工作和重build的项目。

只要在这里添加这个 – 如果有任何问题的家庭控制器上的索引页面不再加载,这可能是因为你还没有安装你的启动项目 。 用鼠标右键单击你想要你的应用程序启动项目,并将其设置为启动项目,你应该很好去。

(MVC 5):将RouteConfig.cs更改为包含如下两条routes

  routes.MapRoute( name: "DefaultWithLanguage", url: "{language}/{controller}/{action}/{id}", defaults: new { language = "fa", controller = "Home", action = "Index", id = UrlParameter.Optional }, constraints: new {language= "[az]{2}"} ); routes.MapRoute( name: "Default", url: "{controller}/{action}/{id}", defaults: new { language = "fa", controller = "Home", action = "Index", id = UrlParameter.Optional } ); 

所以当路由的语言部分没有被指定时,它不会误认为与正则expression式"[az]{2}"不匹配的控制器名称,并replace默认语言并redirect到路由的其余部分。

asp.net mvc项目的起始页面是“Current Page”defaulty。 只需打开一个服务器端文件并启动项目。 通过这种方式,mvc打开默认的控制器,它是您项目的homecontroller

您可以更改项目属性(项目 – >项目属性)中的起始页面。 在网页标签下,您可以selectspecify page ,并将您的开始页面更改为home/home/index 。 这将根据您的路线指引您到正确的页面。 http:// localhost:4148 / Views / Home / Index.cshtml的地址并不是专门用来处理的,因为它是根据你的路由处理的,这个路由指出这个url需要是http:// localhost:4148 / {controller } / {action}和一个可选/ {id}。

如果你想了解更多关于路由的信息,请看看这里。

要看到你的看法是这样的:

 http://localhost:1234/x/MyView 

在xController.cs文件的“控制器”文件夹下,

确保你添加一个这样的ActionResult方法:

 public ActionResult MyView() { return View(whatever); } 

当我没有正确引用我的模型名称时,我也收到了这条消息:

@using(Html.BeginForm(“MyView”,“MyModel”,FormMethod.Get))

在浏览器地址栏input如下:ControllerName / ActionMethod不能inputControllerName / ViewName例如在地址栏中input: http:// localhost:55029 / test2 / getview cshtml文件代码:

 @{ Layout = null; } <!DOCTYPE html> <html> <head> <meta name="viewport" content="width=device-width" /> <title>MyView</title> </head> <body> <div> </div> </body> </html> 

和cs文件代码:

 public ActionResult GetView() { return View("MyView"); } 

如果你已经尝试了所有上述的解决scheme,问题仍然存在,那么使用这个简单的解决scheme。 从这个链接打开debugging器,键入页面URL,然后单击获取新的Scrape信息button。 这将解决您的问题。

背后的原因(我认为)是facebook api保存页面的当前状态,并从它自己的服务器显示相同。 如果您在编码时单击分享button,而您的页面实际上没有上传,那么Facebook API无法在服务器上find该页面,并将页面状态保存为“未find资源”。 现在,即使您上传页面,它也会继续显示相同的信息。 当您从Facebookdebugging器中获取页面时,它将从头开始解决所有问题,并保存页面的当前状态,然后您的共享button开始工作,而不会改变编码。

我有同样的问题,除了我没有使用名称Index.cshtml为我的View ,我做了例如LandingPage.cshtml ,我的问题是在我的控制器的ActionResult不是我的视图名称相同的名称(在这种情况下,我的ActionResult被称为索引()) – 这实际上是明显的,从我的部分是一个愚蠢的错误,但即时通讯新的MVC,所以我会失败的基础知识在这里和那里。

所以在我的情况下,我需要将我的ActionResult更改为与我的ViewLandingPage.cshtml相同的名称

  public ActionResult LandingPage() { ProjectDetailsViewModels PD = new ProjectDetailsViewModels(); List<ProjectDetail> PDList = new List<ProjectDetail>(); PDList = GetProductList(); PD.Projectmodel = PDList; return View(PD); } 

我是MVC的新手,所以也许这会帮助别人,他们是新的,并且与我所做的一样。

对我来说,问题是由命名空间问题造成的。

我已经将我的项目名称空间从MyProject更新到MyProject.Web,但是我忘记了更新项目属性>>默认命名空间。 因此,当我添加一个新的控制器时,它使用旧的命名空间。 我所要做的只是纠正新控制器中的命名空间,并且工作正常。

通过右键单击我想要的视图作为启动页面来解决问题。显示错误“找不到您正在查找的资源”右键单击您的项目,进入Web并select当前页面。 这将解决问题