无法将MVC 4部署到服务器

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

我的所有项目都是“发布”配置。 我已经尝试过在互联网上遇到的各种方式:

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

这些dll是我从GAC复制的(C:\ WINDOWS \ Microsoft.NET \ assembly \ GAC_MSIL)。 我把这些字符串放在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。

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

3.我将三个库复制到bin目录 :System.Web.Mvc,System.Web.Routing,System.Web.Abstractions – 这些dll是我从GAC复制的(C:\ WINDOWS \ Microsoft.NET \ assembly \ 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 。 任何帮助将不胜感激!:)

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

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

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

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

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

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

我做错了什么?

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

 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实际显示导致问题的代码行。

      

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

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

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

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

编辑

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

您是否尝试过部署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的更改不应要求重新编译项目。

希望这可以帮助…

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

有传言说如果你部署bin和mvc dll有一种解决方法,但我找不到任何细节。

阅读MVC 3部署说明

编辑:回答下面的评论:

  1. 编辑可能会产生影响,因此我建议重新编译,例如,如果DLL在部分信任模式下不起作用,则更改为中等信任可能会产生影响,并且重新编译可能会突出显示这些问题。
  2. 听起来不错,通过将html文件放入一些文本进行测试并尝试在浏览器中访问它。
  3. 我见过有人在谈论它,大多说它不受支持,尝试上面的MVC部署指令来部署MVC 4; 它适用于3,它可能适用于4。

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

然后,经过一些试验 – 错误的东西,我可以通过访问Plesk主机管理解决我的问题,并导航到:

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

我们从未触及那个环境,不确定为什么它会突然改变。

希望有所帮助!

希望这可以帮助 。 。 。

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

我有类似的问题,并能够解决它。

我有两个其他mvc应用程序站点托管在godaddy,但没有与他们的新plesk托管。

在致电技术支持并且没有运气之后,我对他们的托管做了一些阅读。

他们的plesk托管必须有一个索引。

所以,几个小时后,我突然意识到他们的服务器设置中的起点是我的Global.asax。

而且,中提琴! 我的网站启动并运行。

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

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

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

在我将customErrors设置为off(第一行)之前,我遇到了同样的问题。 然后我开始看到已经解决的安全政策问题(第二行)。

(我正在使用Godaddy)