Bri*_*man 6 asp.net iis asp.net-mvc asp.net-mvc-routing
出于某种原因,我的路由忽略了任何访问我的MVC页面的尝试,只是给了我404.我有一个WebForms应用程序设置如下:
虚拟目录:事情
所以我经常这样访问我的网站:
我的ASP.NET WebForms应用程序的原始结构镜像文件系统,所以我有完整的.aspx文件夹,我需要能够像这样使用它们.出于某种原因,当我尝试使用MVC路由访问页面时,例如:
我刚收到404错误.我已经使用了ASP.NET MVC,我知道即使我没有正确设置我的文件夹,我也不会得到404.我会得到无法找到页面的原因并提示文件应该在哪里.以下是我的路由信息.我哪里错了?
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.IgnoreRoute("{resource}.aspx/{*pathInfo}");
routes.MapRoute(
"Default",
// Route name
"{controller}/{action}/{id}",
// URL with parameters
new { controller = "Home", action = "Index", id = "" }
// Parameter defaults
);
}
protected void Application_Start()
{
RegisterRoutes(RouteTable.Routes);
}
Run Code Online (Sandbox Code Playgroud)
您能告诉我您正在运行的操作系统以及该站点是在 VS.NET Web Dev 服务器还是 IIS 下运行吗?
MVC 中的路由将请求定向到 Controller 类,然后定向到特定的 Action 方法。您是否有一个名为 HomeController 的类,其中包含一个名为 Index 的方法?
假设你有一个看起来像这样的控制器......
public class HomeController : Controller
{
public ActionResult Index()
{
return View();
}
}
Run Code Online (Sandbox Code Playgroud)
...那么你提到的网址应该可以工作。但是,ASP.NET MVC 希望在 vdir 下名为 Views\Home 或 Views\Shared 的文件夹中找到与 Home 控制器关联的任何视图。在这种情况下,对于 Index 操作,它将期望找到名为 Index.aspx(或 .ascx)的视图。但是,缺少视图通常不会导致 404 - 这通常是由于找不到控制器、找不到操作方法或在 IIS 6 上 asp.net 管道不在 vdir 的通配符设置中引起的。
更新:
您确定您的 web.config 已设置 MVC HttpHandler (以便 MVC 位于 ASP.NET 管道中)。你应该有这样的东西......
<add verb="*" path="*.mvc" validate="false" type="System.Web.Mvc.MvcHttpHandler, System.Web.Mvc, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
Run Code Online (Sandbox Code Playgroud)
...在您的httpHandlers部分和这个...
<add name="UrlRoutingModule" type="System.Web.Routing.UrlRoutingModule, System.Web.Routing, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
Run Code Online (Sandbox Code Playgroud)
...在 web.config 的“httpModules”部分中。
更新2:
根据您的评论,我怀疑您尚未在管道中获取 ASP.NET MVC 代码。您应该获取 web.config 并将其与新创建的 MVC 站点中的 web.config 进行比较,并查找缺少的配置项。我在上面建议了几个,但可能还有更多。
| 归档时间: |
|
| 查看次数: |
2162 次 |
| 最近记录: |