无法将ASP.NET MVC项目部署到托管服务提供商。 404错误

时间:2010-02-10 07:08:01

标签: asp.net-mvc visual-studio-2008 deployment

我将我的VS2008 ASP.NET MVC 1.0项目发布到本地文件夹,然后将其FTP到我主机上的虚拟目录。我试图运行,它抱怨System.Web.Mvc.dll丢失,所以我复制了。

之后我得到了404.现在我知道它到达了我的HomeController.Index方法,因为它执行了RedirectToAction。下一个操作(在同一控制器中)是导致问题的原因。

我感觉路由无法正常工作。

我和Fiddler一起看了这个应用程序:

  1. 我转到http://www.example.com/myApp
  2. 获得301(永久重定向)至http://www.example.com/myApp
  3. 的结果
  4. 然后我得到302(重定向到/ myApp / Home / Details / 2)。这是正确的,因为HomeController上的Index方法使用参数2对Details方法执行RedirectAction。
  5. 然后浏览器点击http://www.example.com/myApp/Home/Details/2。此时我得到404未找到。
  6. 所以似乎/ Home / Details / 2没有映射到我的控制器,尽管下面的代码是global.asax:

    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 = "" }  // Parameter defaults
        );
    
    }
    
    protected void Application_Start()
    {
        RegisterRoutes(RouteTable.Routes);
    }
    

    那么我错过了什么?

3 个答案:

答案 0 :(得分:2)

您只需要部署MVC dll。路由附带SP1。我建议:

  • 创建一个返回基本信息的测试/状态控制器
  • 使用Firebug或Fiddler工具查看HTTP上发生的事情
  • 尝试查找配置的任何问题:
    • 确保在web.config
    • 中包含Routing和MVC Http模块/处理程序
    • 确保您的扩展名正确,特别是在IIS 6上(例如,如果您使用的是.mvc它应该在您的路由以及IIS配置和web.config中)
    • IIS 6配置可以是trickey
    • AFAIK(抱歉不知道这个问题但是)IIS 7配置也应该在你的web.config中。

我一直在类似的情况下拉我的头发,不幸的是我的经验(主要是在IIS 6虽然),我不得不一遍又一遍地检查和检查所有这些点和配置的试验和错误来获得它工作。

答案 1 :(得分:2)

嗯,答案一直盯着我:

alt text

link解释了如果您的主机是IIS6(goDaddy)或IIS7经典模式,该怎么办。

答案 2 :(得分:1)

确保服务器安装了ASP.NET MVC 1.0 RTM - 因为它具有运行MVC站点所需的所有dll(路由,mvc等)。

相关问题