ASP.net MVC项目没有在IIS上编译

时间:2009-10-01 09:46:23

标签: asp.net-mvc iis deployment iis-7 compilation

我以前只是将asp.net网站上传到实时服务器,IIS会自动编译它们。

但是当我对asp.net MVC项目做同样的事情时,我只是出错了,我需要在上传之前发布Build项目。

注1:我正在使用VWD 2008 Express

注意2:如果我在我的机器上发布它然后上传到服务器,项目工作正常

9 个答案:

答案 0 :(得分:5)

Charles Boyung的评论应该被认为是一个答案。

  

MVC应用程序就像Web   项目,而不是Visual中的网站   Studio - 必须先编译它们   部署。 -

不在服务器上编译是Web应用程序项目(WAP)和网站项目(WSP)之间的差异之一

http://vishaljoshi.blogspot.com/2009/08/web-application-project-vs-web-site.html

  

<强> Q1。您是否打算在生产服务器上部署源代码并在服务器上编辑它,如果报告了时间敏感的错误?

     

如果您对上述内容的回答为“是”   问题,你想使用网站   项目(WSPs)......如果是网站   项目Visual Studio并不是真的   在您的dev上编译源代码   框,它只是使用aspnet_compiler   验证您的源代码   实际上编译并运行   server ...因此,当您尝试部署时   人们通常也是一个网站   在服务器上部署源代码   这允许他们编辑源   在生产服务器上,如果   有一个时间敏感的错误   报告

答案 1 :(得分:2)

归结为项目模型。 Asp.net MVC只适用于项目文件(不是文件夹方法),所以你真的需要构建它来发布它(可以使用发布功能并在那里复制All - 包括bin文件夹)。

您可能可以通过添加一些调用编译器的自动化来解决它,但它只是为您上传您拥有的.cs文件的程序集而设计的。与此方法相关的是将持续集成到您的工作中,或者可能只是借用负责构建的工作。

注意:我认为asp.net的基于文件夹的模型比基于项目的项目的时间更少,即因为基于asp.net项目文件的模型的第一个版本是一个使用时,当引入vs 2005时,他们改为基于文件夹的模型,然后added the project file one again。检查链接以获取有关项目文件模型的信息。

答案 2 :(得分:1)

使用mvc你可以进行“发布”,这将放在你选择的所有文件的目录中,你需要复制它们应该在的目录结构。注意在mvc中所有的c#文件都被预先编译成bin目录中的一个DLL,然后由IIS编译。所有其他“web”文件:aspx,css等文件仍将采用正常格式。但是,如果您进行发布然后复制该目录,则应该获得所有内容。

我假设您所获得的错误是由于您没有复制所有必需的文件而没有其他信息,因此很难将其缩小范围。

答案 3 :(得分:1)

如上所述,您需要在部署项目之前构建项目。另外,你确定在服务器上安装了ASP.NET MVC吗?

答案 4 :(得分:1)

试试这个,看它是否有效。 (或者只是确保您部署的服务器安装了ASP MVC)

  • 展开您的项目References文件夹
  • 右键单击System.Web.Mvc dll并选择属性。
  • True的下拉列表中选择Copy Local。这将在您执行构建/打包时将ASP MVC dll复制到bin文件夹。

答案 5 :(得分:0)

我相信您可能在IIS上的Web.config文件中缺少对System.Web.Mvc程序集的引用。确保在Web.config文件中引用了此程序集。

您还必须确保IIS可以使用此程序集。我认为它是一个强名称的程序集,因此可以将其添加到运行IIS的计算机上的GAC(全局程序集缓存)中。如果开发机器和部署机器是两台独立的机器,那么最后一点尤为重要。

答案 6 :(得分:0)

问题是,您的本地环境与生产环境有什么区别?您是否正在使用任何类型的(前置或后置)构建步骤,例如Javascript最小化?

答案 7 :(得分:0)

我遇到了类似的问题,原来是服务器没有安装ASP.NET MVC。一旦我将MVC dll复制到bin目录中,它就可以正常工作了。你确定服务器上有MVC dll可用吗?尝试将它们复制到项目中,看看它是否有效。

答案 8 :(得分:0)

您尝试上传的服务器是否具有System.Web.Mvc dll?