3

我从 fasthosts.co.uk 购买了 Windows Developer 托管包,我认为这是一个沼泽标准共享托管包。它有 ASP.NET 3.5,并且根据他们的支持,还安装了 SP1。

我已经使用 ASP MVC 2 预览版 1 开发了我的 Web 应用程序(顺便说一句,它很棒,我期待着进入预览版 2)并且它在我的开发机器上运行良好,我通过该机器安装了预览版 2安装程序包。

由于服务器没有安装 MVC,我遵循了 Phil Haacks bin 部署方法,该方法无法正常工作,因为发生了以下情况......

当我部署它并将文件复制到服务器时,我得到一个无用的“服务器错误 500 - 内部服务器错误”。所以我修改了我的 web 配置,以便 customErrors mode="Off" 没有任何区别,所以我认为正在发生的事情甚至阻止它到达 customErrors 位。

然后我继续删除一些网络配置,直到它给了我一个不错的错误消息。我发现如果从配置中取出以下位,它只会给我一条错误消息 -

  • 整个 configSections 部分
  • 整个 httpHandlers 部分
  • 整个 system.codedom 部分
  • system.webServer 部分的处理程序和 defaultDocument 部分

我正在使用 MVC 生成的标准 Web 配置,除了我自己的连接字符串之外没有任何更改 - 我为此测试取出了它。

现在我得到它给我一条错误消息,我收到“无法加载文件或程序集 System.Web.Mvc ...”消息,我被卡住了!- 有什么建议么?

编辑:

我和别人一起买了一个新的主机包,一切都很好!当我部署一个空的 MVC 应用程序时,我确信这是 Fasthosts 的错误,这要归功于 Phils 的建议,然后是一个空的普通 Web 表单应用程序——它们都给出了相同的错误。

我目前正在试图说服他们这是他们的错,但他们不断向我保证问题出在我的网络配置上。尝试取消我与他们的托管,但我显然签订了 12 个月的合同,即使我选择每月支付 - 哦,好吧。

我想不要使用 Fasthosts 将是摆脱这一点的一件事。

4

6 回答 6

2

听起来您可能没有部署到 webroot。是这样吗?尝试部署一个空的 MVC 项目。

于 2009-10-02T18:40:57.100 回答
2

我知道这已经过时了,但我在尝试在 Fasthosts 共享托管平台上设置 MVC 5 站点时发现了这个问答。我最终让它工作的方式是添加runAllManagedModulesForAllRequests="true"到我的web.config中,例如:

  <system.webServer>
    <modules runAllManagedModulesForAllRequests="true">
      <remove name="FormsAuthenticationModule" />
    </modules>
  </system.webServer>

这一切都很好!

更新事实证明,这有点像用大锤敲碎坚果,并且可能会对性能产生影响。Colin Farr正确地指出,可以通过修改 web.config 的 modules 部分来更优雅地解决这个问题:

    <modules>
      <remove name="UrlRoutingModule-4.0" />
      <add name="UrlRoutingModule-4.0" type="System.Web.Routing.UrlRoutingModule" preCondition="" />
      <!-- any other modules you want to run in MVC e.g. FormsAuthentication, Roles etc. -->
    </modules>
于 2014-02-22T22:00:09.093 回答
1

发生错误是因为快速主机不允许配置部分的 system.webserver 部分与网络服务器交互(非常烦人)。我已经将一个 MVC 网站部署到一个 fasthost 帐户,它部分工作......您可以查看索引页面,但路由不起作用。要摆脱错误,只需注释掉 system.webserver 部分。我一直无法使用 .aspx 或 .mvc 扩展来让路由工作:(

于 2009-10-17T19:49:47.273 回答
1

我的 MVC 站点按如下方式工作:

我将 aspx 扩展添加到我的默认路由映射:

  routes.MapRoute(
            "Default", // Route name
            "{controller}.aspx/{action}/{id}", // URL with parameters
            new { controller = "Front", action = "Default", id = UrlParameter.Optional }
        );

  routes.MapRoute(
            "Root",
            "",
            new { controller = "Front", action = "Default", id = "" }
          );

我不认为 Root 确实有效,因为我收到了 403,“没有目录列表”错误,所以我在站点中添加了一个 default.aspx 页面,该页面只是在 OnInit 中重定向到“~/Front.aspx/Default "(请注意,我的默认控制器已重命名为 Front 而不是 Home)。

我将三个 Mvc dll 更改为 Copy Local,以便将它们部署到我站点的 bin 目录中。

我对所有页面链接都使用了 HtmlAction,以便它们自动获得 aspx 扩展名。

我注意到该网站在初始加载时比使用网络表单要慢,但除此之外一切似乎都还好。

于 2010-07-07T13:59:56.333 回答
0

仔细检查您的 Global.asax 和代码隐藏......我认为当应用程序甚至无法启动时会发生这种错误(因此除了 500 之外没有其他错误)。

您是否尝试过放置一个没有代码隐藏或其他任何东西的简单、独立的 ASPX 页面?如果是这样,你会得到同样的错误吗?如果是这样,我认为 ASP.NET 3.5 未正确配置为您的虚拟目录,您必须要求技术支持重新安装/修复或在 IIS 虚拟目录属性的 ASP.NET 选项卡中设置版本。

于 2009-10-02T19:43:14.820 回答
-1

您需要服务器上的 ASP.Net MVC 2 dll。在您的项目中,选择属性下的 dll,将“复制本地”更改为 true。

于 2009-10-02T18:06:43.470 回答