托管 MVC3 应用,仅目录列表.路由不起作用

本文关键字:列表 路由 不起作用 MVC3 应用 托管 | 更新日期: 2023-09-27 18:30:48

好的,所以部署到本地IIS我的项目工作正常。部署到在线主机,我只得到目录列表。

使用 VisualStudio 2012, mvc3, .net 4.5发布到 Web 设置:

  1. 发布方式:FTP
  2. 服务器:www."mysite".co.za
  3. 站点路径:"空白"(我的理解是我直接发布到应用程序目录,所以我的根包含bin,views,global.asax,web.config)
  4. 目标网址:http://www."mysite".co.za
  5. 数据库已在 web.config 中启动并配置

如果单击视图目录,我会收到 404 错误。

我接下来要做的是查看它是否执行global.asax,所以我添加了代码以在RegisterRoutes中抛出异常(从Application_Start()调用)

    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        
      );
      throw new Exception("This is my custom error: Currently in RegisterRoutes");      
    }

真的是鲍勃,我得到以下内容(但仍然只有当我点击我的视图目录):

"/"应用程序中的服务器错误。

这是我的自定义错误:当前在注册路由中

描述: 执行当前 Web 请求期间发生未经处理的异常。请查看堆栈跟踪,了解有关错误及其在代码中起源位置的详细信息。 异常详情: 系统异常:这是我的自定义错误:当前在注册路由中

所以我的问题: 1. 为什么我的根不会拾取全局.asax? 2. 如何查看路由后代码执行的位置。MapRoute(...)?(即删除抛出异常;)后)

问候

托管 MVC3 应用,仅目录列表.路由不起作用

这也恰好是这样。 通常这是由于 Web 配置中缺少一些设置。 具体来说,这个问题提供了答案。 编辑 Web 配置以加载所有请求的所有托管模块。

<system.webServer><modules runAllManagedModulesForAllRequests="true"></modules></system.webServer>

您可能没有在服务器上注册 IIS。请使用 aspnet_regiis -i 注册它,然后在 IIS 中的应用程序池下检查 .net 版本。