将ASP.NET MVC应用程序部署到IIS7并保持干净的web.config

时间:2009-02-23 20:03:33

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

我想将我的ASP.NET MVC应用程序部署到Web托管公司(如DiscountASP.net)。我对Web服务器上web.config文件中需要的内容感到困惑。当我在本地创建项目时,我得到了一个臃肿的web.config,其中包含各种附加模块,处理程序和编译器。我是否需要将所有这些项添加到生产web.config文件中?

我仍然在IIS6中部署我当前的ASP.NET应用程序(而不是MVC),我总是为生产环境手工制作一个简单的web.config,并将其与其余的应用程序文件一起上传。看起来像IIS7我打算使用Web服务器上的IIS管理器来构建web.config。在生产服务器上构建/管理web.config的最佳方法是什么?

4 个答案:

答案 0 :(得分:6)

所以这就是我到目前为止尝试将我的MVC应用程序部署到DiscountASP.net的内容。

我发现的第一个想法是我必须确保System.Web.Mvc已部署到bin中,因为它未安装在GAC中:

http://haacked.com/archive/2008/11/03/bin-deploy-aspnetmvc.aspx

然后我开始使用一个只包含数据库连接字符串的超级基本web.config。我的申请没有用。

然后我将我本地web.config的乱码复制到服务器并更改了数据库连接字符串,事情开始起作用,但我仍然收到错误消息:

Could not load type 'System.Web.Mvc.ViewPage<MyCustomModel>'

然后我发现这篇文章解释了如何更改web.config以支持不使用文件后面的代码(出于某种原因,您不需要使用本地Visual Studio Web服务器):

http://blog.benhall.me.uk/2009/01/aspnet-mvc-rc1-removing-code-behind.html

就个人而言,我不喜欢简单的应用程序设置(如连接字符串和SMTP设置)与复杂的MVC(和AJAX.NET)基础结构设置混合在一起。一个不错的选择是托管公司(如DiscountASP.net)设置Master.config(或更高级别的web.config)来支持MVC,这样我的web.config只需要包含我的简单应用程序设置。

答案 1 :(得分:3)

.Net 3.5和IIS7都在web.config中添加了相当多的文本。我所做的是使用IIS7中的IIS管理器配置一次应用程序。然后我接受修改后的web.config并将其重新检入源代码控制。这样,在环境之间迁移时,将保留所有IIS设置。

答案 2 :(得分:2)

System.Web.Extensions是MS AJAX AKA Atlas的东西,有几个模块和处理程序以及与此程序集相关的部分。如果您没有使用MS AJAX,请随意删除它们。

答案 3 :(得分:1)

也许你采取了一种搜索和破坏的方法并将配置芯片取消,直到你删除了你不需要的一切。在不知道您的应用程序及其依赖关系的情况下,很难说您可能需要或不需要什么。

最好的方法是始终拥有一个尽可能接近镜像生产环境的开发环境 - 您不希望以这种方式编辑生产配置。