【问题标题】:Cannot deploy MVC 4 to server无法将 MVC 4 部署到服务器
【发布时间】:2014-01-16 10:52:17
【问题描述】:

我的 Web 应用程序只是一个在 VS 2010 MVC 4 中制作的简单 Web 应用程序,没有任何外部代码。它只是 VS 2010 的默认应用程序。我有带有 Plesk 的 Deluxe Windows Hosting。我从未更改过我帐户中的任何功能。我将所有文件复制到“//根目录”。在我的文件旁边,我看到各种文件夹,例如:“、plesk、erro-docs、cgi-bin、日志” - 我没有删除它们的权限。

我所有的项目都是“发布”配置。我尝试了所有在网上遇到的方法:

1.我将三个库复制到bin目录: System.Web.Mvc、System.Web.Routing、System.Web.Abstractions

我从 GAC(C:\WINDOWS\Microsoft.NET\assembly\GAC_MSIL) 复制了这些 dll。我在 web.config 中放入了这样的字符串:。我通过按钮“发布”在 VS2010 中使用本地部署(到目录)。没有结果。

2.我复制了9个库到bin目录:

System.Web.Abstractions.dll System.Web.Helpers.dll System.Web.Mvc.dll System.Web.Optimization.dll System.Web.Razor.dll System.Web.Routing.dll System.Web.WebPages.Deployment.dll System.Web.WebPages.dll System.Web.WebPages.Razor.dll。

我从 GAC(C:\WINDOWS\Microsoft.NET\assembly\GAC_MSIL) 复制了这些 dll。我通过按钮“发布”在 VS2010 中使用本地部署(到目录)。我放了这样的字符串:。没有结果。

3.我将三个库复制到 bin 目录:System.Web.Mvc、System.Web.Routing、System.Web.Abstractions - 这些 dll 是我从 GAC(C:\WINDOWS\ Microsoft.NET\程序集\GAC_MSIL)。我放了这样的字符串:。我通过按钮“发布”在VS2010中通过ftp选项使用部署。没有结果。

4.我将三个库复制到bin目录: System.Web.Abstractions.dll System.Web.Helpers.dll System.Web.Mvc.dll System.Web.Optimization.dll System.Web.Razor.dll System.Web.Routing.dll System.Web.WebPages.Deployment.dll System.Web.WebPages.dll System.Web.WebPages.Razor.dll - 这些 dll 是我从 GAC 复制的(C:\WINDOWS\Microsoft.NET\assembly\GAC_MSIL)。我放了这样的字符串:。我在VS2010中通过“发布”按钮通过ftp部署没有结果。

5.我尝试通过 filezzilla 上传文件。 。然而,这是一次无谓的尝试。

6.我尝试通过浏览器上传文件。然而,这是一次无谓的尝试。

7.我尝试通过浏览器上传 zip 文件并在 godaddy 服务器上解压。 。然而,这是一次无谓的尝试。

上面列出的所有尝试都会在屏幕上显示单词:“nup.com 我的网站即将启动。” 没有任何变化。

我有一个问题。

我做错了什么?

我已阅读 Phil Haack http://haacked.com/archive/2008/11/03/bin-deploy-aspnetmvc.aspx 的所有文章。任何帮助将不胜感激!:)

【问题讨论】:

  • 您使用的是支持 .NET 的 GoDaddy 托管帐户吗?这些 GAC 的东西是什么?只需右键单击您的项目并选择发布并使用“文件系统”。将其拉上并解压缩,您就走了!除了您需要使用 GoDaddy 将文件夹转换为 IIS 中的“应用程序”之外。
  • @ta.speot.is ,是的,我确实像你说的那样。但是,它没有任何结果。我的计划是使用 Plesk 进行豪华 Windows 托管,它支持 .NET。
  • 结果如何?您访问该页面并收到错误消息?错误信息是什么?
  • @ta.speot.is , 500 - 内部服务器错误。您要查找的资源有问题,无法显示。我只发送了默认应用程序,没有任何代码。
  • 大多数提供商都为您提供了查看错误日志的方法。那里应该有更多信息。

标签: c# asp.net asp.net-mvc web-deployment


【解决方案1】:

好的 - 您的单个问题中有很多问题。我将尝试一次获取这些以及您的一些评论,以便我们可以 a) 了解 MVC 应用程序的构建/发布过程,b) 希望让您的项目在 GoDaddy 上运行。

1.如果我更改了 web.config ,那么我应该重新编译我的项目并再次上传吗?

不,除非您在本地更改 web.config 并且需要上传这些更改。如果您通过 FTP/连接到实际 Web 服务器上的 web.config,IIS 将自动重新启动(重新加载)您的应用程序,以便它可以应用 web.config 更改。更改 web.config 后,您会注意到第一个请求需要 10-20 秒。这是 IIS 重新启动您的应用程序。如果您在本地更改 web.config,那么是的,您应该重建/重新上传。

2.将项目复制到目录根目录是否正确?

你提出这个问题的方式让我觉得是的,你做错了。在 Visual Studio 中创建项目时,您会在实际硬盘驱动器上获得一个解决方案文件夹。如果您正在编译该项目,然后将整个解决方案文件夹复制到您的 Web 服务器,那么是的,这不是正确的方法。您要做的是创建一个Publishing Profile。您可以通过 Web Deploy(不确定 GoDaddy 是否支持此)、FTP 或文件系统来部署您的应用程序。通过 Visual Studio 发布过程,编译器 a) 根据您的设置(调试或发布)编译您的应用程序,b) 应用适当的 Web.Config 转换和 c) 输出所需的文件运行您的应用程序。第三部分很重要。您的所有 .cs 文件(控制器、模型等)都被编译成 .dll ,这就是需要部署的内容,而不是实际的源代码文件。发布过程会为您执行此操作。

我建议您在开发机器上的某个地方创建一个文件夹,然后创建一个发布配置文件,将您的应用程序发布到该文件夹​​。它是您想要通过 FTP 传输到您的 Web 服务器的那个文件夹的内容。要创建发布配置文件,请右键单击您的 MVC 项目并选择 Publish。这将打开向导供您进行设置。

3.我做错了什么?

在这一点上很难说。可能是您没有正确编译您的应用程序。 FTP 听起来很糟糕,但这不是 MVC/Visual Studio 问题。对于 GoDaddy(和其他项目)上的 Plesk 的 FTP 问题,请查看此help link here.

4.how can I see the errors? Should I write a message or what should I do to know more about errors?

您应该能够在您的 web.config 中控制它。打开您的 web.config 文件并检查几行。您想要关闭自定义错误并将编译设置为调试模式。这有两件事。一,您从服务器返回的错误将更加详细,并且处于调试模式允许 IIS/.NET 实际向您显示导致问题的代码行。

  <system.web>
    <compilation debug="true" targetFramework="4.5" />
    <customErrors mode="Off"></customErrors>
  </system.web>

请注意,如果您确实进行了 web.config 转换,这实际上可能会关闭这些设置。确保在测试部署站点时将发布配置文件设置为部署 Debug 配置。一旦您对结果感到满意,请将其设置回 Release 配置,以便您的网站运行得更快,并且在发生错误时不会向潜在的坏人显示代码行。

5.我将9个库复制到bin目录...

好的,这也可能是个问题。您不需要将任何内容复制到您的 bin 目录。如果要在已发布的项目中包含引用的程序集,只需打开项目下的 References 文件夹即可。从那里,右键单击要在发布时包含在项目中的任何程序集,然后选择Properties。在属性窗格中,您将看到Copy Local 的选项。将此设置为真。这告诉编译器在发布过程中将该程序集复制到输出文件夹(请参阅,发布的东西对您有很多好处!)我将为您项目中与 MVC 相关的所有程序集执行此操作。您可以对此进行试验(例如一次一个),直到找到需要包含在项目中以使其在 GoDaddy 服务器上运行的正确程序集组合。我已经有一段时间没有使用 GoDaddy 托管了,所以我不知道他们目前的功能是什么。

最后的想法,我认为 MVC 4 是 .NET 4 或更高版本。确保 GoDaddy 支持 .NET 4 或更高版本,否则您真的无法在该服务器上托管它(即使使用 bin deploy),并且需要寻找额外的托管。 Azure 现在有一些非常棒的交易,Gearhost 非常可靠但有点贵(尽管它们使用起来非常简单)。

编辑

更多关于 GoDaddy 的信息 - 确保您在尝试任何这些之前正确设置您的网站。您需要拥有 Windows 主机(很可能),并且应该将其设置为使用集成应用程序池(否则,您似乎从未上传任何内容,因为没有“默认文档”)。在这一点上,我想知道您的主机帐户是否已正确配置为您想要做的事情。 http://support.godaddy.com/help/article/6639/do-your-hosting-accounts-support-mvc3-applications(是的,我知道它说的是 MVC 3,但该设置同样适用于 MVC 4)

【讨论】:

  • 干得好!但是,我已经尝试了所有方法来部署应用程序。我已经创建了“发布配置文件以使用“FTP-deploy”的“web deploy”。但它们没有任何效果。我只看到这样的话:“我的网站即将启动。 "
  • @StepUp 您是否尝试发布到本地文件夹,然后使用 FTP 客户端 FTP 到您的站点?另外,我建议您删除任何已经存在的文件(在您的 FTP 站点上),然后部署。
  • 是的,我尝试发布到本地文件夹,然后上传到 FTP。这没用。 Godaddy 支持说我可以部署一个 mvc 项目。但我所有的尝试都是徒劳的。
  • “空闲”是什么意思?如果没有文件正在传输,听起来像是 FTP 问题。可能是防火墙阻止了连接?
  • 我通过VS2012的“发布”按钮将文件上传到FTP。但是,我的 mvc 4 应用程序没有运行。它仍然显示“我的网站即将启动”。有什么建议吗?
【解决方案2】:

你试过 bin 部署 MVC4 吗?
http://haacked.com/archive/2011/05/25/bin-deploying-asp-net-mvc-3.aspx/

http://forums.asp.net/t/1884928.aspx

回答你的问题:

  1. 对 web.config 的更改不应要求重新编译项目。

【讨论】:

  • 是的,我试过了。然而,这是一次徒劳的尝试。它对你有用吗?
【解决方案3】:

希望这会有所帮助...

  1. 取决于您所做的更改,某些更改可能至少需要重置应用程序池。
  2. 什么目录的根目录?它通常应该在 inetpub/YOURWEBSITEFOLDERHERE 内
  3. 您假设 GoDaddy 支持 MVC 4,我只能找到支持 MVC 3 Support 的引用

有传言说,如果你部署 bin 和 mvc dll,有办法解决这个问题,但我找不到任何细节。

阅读MVC 3 deploy instructions

编辑:回答下面的评论:

  1. 编辑可能会产生连锁反应,因此我建议重新编译,例如如果 DLL 在部分信任模式下无法工作,更改为中等信任可能会产生影响,并且重新编译可能会突出这些问题。
  2. 听起来不错,通过将一些文本放入一个 html 文件进行测试,然后尝试在浏览器中访问它。
  3. 我看到有人在谈论它,主要是说它不支持,尝试上面的MVC部署说明来bin部署MVC 4;它适用于 3,它可能适用于 4。

【讨论】:

  • 1.我只编辑 tag.2。我有一个在godaddy 获得的域名。所以我将文件复制到我的域 - “www.hhh.com”//根目录。 3. 我在 godaddy 看到人们谈论 MVC4 的话题
【解决方案4】:

我在使用 Plesk 在 Godaddy 上运行 MVC4 时遇到了同样的问题。突然,没有任何变化,站点开始显示“站点即将启动”页面。起初我以为它被黑客入侵了。在致电 godaddy 支持后,代理告诉我该站点必须至少需要一个 html 文件作为起点(index.html、index.aspx、default.aspx - 来源:http://support.godaddy.com/help/article/60/what-file-displays-when-someone-browses-to-my-domain-name?locale=en&ci=46061),这似乎很奇怪,因为它正在运行一直都很好。

然后,经过一些试错后,我可以通过转到 Plesk 主机管理来解决我的问题,然后导航到:

网站与域 > [域名] > 域的 Web 服务器设置。然后,将默认文档设置更改为“默认”。

我们从未接触过该设置,不知道为什么它突然改变了。

希望有帮助!

【讨论】:

  • 我们已经迈出了第一步。现在我有另一个错误:“禁止访问。您无权访问此文档。位于 nup.com 的 Web 服务器”。你遇到过这样的错误吗?
  • 是的,但是,当更改该设置并删除由 GoDaddy 注入的页面(网站即将启动..)时,它消失了,删除 Default.aspx 和 index.html站点的 FTP 根目录,然后重试。
  • 你改变了什么设置?我删除了页面 Default.aspx 和 index.html,但我仍然看到错误:“禁止您无权访问此 document.Web Server at nup.com”。我试图删除 GoDaddy 注入的页面(站点即将启动..),但 godaddy 服务器说:“无法删除 /error_docs/unsupported_media_type.html:访问被拒绝”。如何删除这些文件?
  • 除了你写的东西你还做了什么吗?
  • 嘿,不,这些是唯一应用的更改。 1. 删除 FTP 根文件夹(httpdocs 或包含您的域的文件夹)上的“即将启动的页面”。 2. 将默认文档设置变量设置为“默认”。验证这一点,如果我做了其他更改,我会检查。
【解决方案5】:

希望这会有所帮助。 . .

Global.asax 应该是您的默认索引。 . .在 Godaddy 服务器设置中。

我遇到了类似的问题,并且能够解决。

我在 godaddy 上托管了另外两个 mvc 应用程序站点,但没有使用他们新的 plesk 托管。

在致电技术支持但没有任何运气之后,我在他们的主机上做了一些阅读。

他们的 plesk 主机必须有一个索引。

所以,几个小时后,我突然想到在他们的服务器设置中将他们的起点指向我的 Global.asax。

还有,中提琴!我的网站已启动并正在运行。

【讨论】:

  • 我打开了“网络服务器设置”并删除了 Goddaddy 提供的所有值(Index.html、Index.htm、Index.cfm)并只输入了 Global.asax。但是,我仍然看到错误:“禁止您无权访问此文档。nup.com 的 Web 服务器”。我可以尝试做什么?
  • 也许这确实只是 Godaddy 上目录结构设置方式的权限问题。你给他们打电话了吗?只要您没有遇到任何涉及网站内容的过于复杂的事情,他们似乎就很愿意提供帮助。
  • 我住在蒙古,打电话给godaddy支持真的很贵。
【解决方案6】:

我已完成所有正确部署的操作,但我将所有文件复制到了错误的文件夹中。问题是我只是将所有文件复制到了错误的目录。我打电话给godaddy支持,他们说我将文件复制到了错误的目录。

当我将所有文件复制到 "httpdocs" 目录时,我的 mvc 4 应用程序开始工作!:)。

非常感谢你们,伙计们。祝你好运。

【讨论】:

    【解决方案7】:

    在我将 customErrors 设置为关闭(第一行)之前,我遇到了同样的问题。然后我开始看到已修复的安全策略问题(第二行)。

    (我正在使用 Godaddy)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-24
      • 1970-01-01
      • 1970-01-01
      • 2014-05-26
      相关资源
      最近更新 更多