2

我一直在为 VS 2010 中的一个新的 ASP.NET MVC 4 项目而苦苦挣扎。我有一个非常基本的设置,只有一个控制器 ( SiteController)、一个路由 ( {action}) 和一个视图 ( Views/Site/Default.cshtml)。出于某种原因,我无法让它显示视图,即使路由根据 RouteDebugger 匹配,我得到的只是 404 错误。我以为是 Cassini 是个混蛋,所以我安装了 IIS 7,但它仍然无法正常工作。以下是相关代码:

站点控制器

/// Note: BaseController is in a different assembly I use to extend MVC and it works fine because I use it in a dozen other projects.
public class SiteController : BaseController {
    public ActionResult Default() {
        return base.View();
    }
}

路由配置

public class RouteConfig {
    public static void RegisterRoutes(
        /// http(s)://{host}/{action}
        routes.MapRoute("6354af93-f979-44a4-ba9b-cc8ab775edf6", "{action}", new {
            action = "Default",
            controller = "Site"
        });

        /// http(s)://{host}/{*any}
        routes.MapRoute("04b41915-4455-4c11-96c2-38e6aedf929f", "{*any}", new {
            action = "Default",
            controller = "Site"
        });
    }
}

这是项目的文件夹结构:

App_Start
    BundlesConfig.cs
    FilterConfig.cs
    NinjectWebCommon.cs
    RouteConfig.cs
Controllers
    SiteController.cs
Models
Views
    Shared
        _Site.cshtml
    Site
        Default.cshtml
    Web.config
Global.asax
packages.config
Web.Config
4

2 回答 2

2

原来我的BaseController课导致了 404 错误。不知道为什么,还要检查那个项目,但现在我已经恢复为默认SiteController继承。Controller

更新

我花了最后几个小时重建我拥有的 .NET 扩展解决方案,其中包含BaseController我在上面引用的内容。我使用 v4 程序集重新定位它并能够将其重新插入。所以,我想我使用引用 v3 程序集的扩展是错误的。

于 2013-09-29T23:06:34.207 回答
0

如果您没有想法,我会推荐用于调试问题的步骤...

  1. 使用 vs2012 项目模板在机器上设置一个空的默认 MVC 项目,运行它并确保一切正常
  2. 添加基本​​控制器并在项目模板的 DefaultController 中使用它,并确保默认控制器仍然有效。
  3. 用您的自定义路由替换默认路由,并确保默认路由仍然有效
  4. 将 _site.cshtml 添加到默认值并确保它仍然有效。
  5. 添加站点控制器并将路由更改为路由到那个
于 2013-09-29T23:07:18.287 回答