托管的MVC3应用程序,只有目录列表。路由不起作用?

4 浏览
0 Comments

托管的MVC3应用程序,只有目录列表。路由不起作用?

好的,那么将项目部署到本地IIS后,一切正常。但将其部署到在线主机时,我只能看到目录列表。

(使用VisualStudio 2012、mvc3、.net 4.5

发布到Web的设置:

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

如果单击"Views"目录,我会收到404错误。

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

    public static void RegisterRoutes(RouteCollection routes)
    {      
      routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
      routes.MapRoute(
        "Default", // 路由名称
        "{controller}/{action}/{id}", // 带参数的URL
        new { controller = "Home", action = "Index", id = UrlParameter.Optional } // 参数默认值        
      );
      throw new Exception("这是我的自定义错误:当前在RegisterRoutes中");      
    }

然后我得到了以下结果(但只有在我点击我的View目录时才会得到):

服务器错误。

这是我的自定义错误:当前在RegisterRoutes中

描述:在当前网络请求的执行过程中发生了一个未处理的异常。请查看堆栈跟踪以获取有关错误的更多信息以及错误在代码中的起源位置。

异常详细信息:System.Exception: 这是我的自定义错误:当前在RegisterRoutes中

所以我的问题是:

1. 为什么我的根目录没有识别到global.asax?

2. 如何查看在routes.MapRoute(...)之后代码的执行结束位置?(即在删除throw Exception之后)

谢谢

0
0 Comments

问题的原因是在网页配置文件中缺少一些设置。具体来说,根据提供的答案,需要编辑网页配置文件以加载所有请求的托管模块。


  

非常感谢!经过三天的试错,问题终于解决了!

0
0 Comments

问题:Hosted MVC3应用程序,只有目录列表。路由不起作用。

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

解决方法:运行aspnet_regiis -i注册IIS,并在IIS的应用程序池中检查.net版本。

0