如何在web.config中包含IIS模块的配置,而不破坏未安装模块的服务器上的应用程序

时间:2010-11-10 14:38:06

标签: iis-7 web-config iis-7.5

我想在我的应用程序的web.config文件(<httpWarmup>内的<system.webServer>元素)中包含IIS {的Application Warmup module配置。

这在安装模块时工作正常,但如果我想将应用程序部署到没有安装模块的服务器(例如IIS Express),我会得到

  

HTTP错误500.19 - 内部服务器   错误
  请求的页面不能   访问因为相关   页面的配置数据是   无效。

可以这样做吗?是否有设置使IIS忽略<system.webServer>中无法识别的额外元素?

由于

1 个答案:

答案 0 :(得分:2)

如果您使用的是Visual Studio 2010,则可以使用web.config转换功能。使用转换,您可以结合网站“发布”工具,转换web.config并添加/删除设置,具体取决于您是在进行调试还是发布版本。

有关详细信息,请参阅:

  

Web.config Transformation Syntax for Web Application Project Deployment
  How to: Transform Web.config When Deploying a Web Application Project

Scott Hanselman有一个很棒的演示这个功能:

  

Web Deployment Made Awesome: If You're Using XCopy, You're Doing It Wrong

这适用于ASP.NET 2.0和4.0。

如果您仍在使用Visual Studio 2008,那么仍然可以实现此目的。

首先是使用强力方法并维护多个web.config文件。在VS中构建项目时,在正确的web.config文件中使用预构建的事件交换。我之前使用过这种技术,但Scott Hanselman(一如既往)有一个很好的例子:

  

Managing Multiple Configuration File Environments with Pre-Build Events

如果您直接使用MSBuild,则可以使用构建任务来修改web.config文件。 MSBuild Community Tasks Project提供了一个扩展库,它为MSBuild提供了额外的扩展,使这些任务更容易。 XmlMassUpdate任务可能是您要使用的任务。我会诚实地承认,我现在只是抓住了MSBuild的表面,并没有真正尝试过这个,但是(我并不是以LMGTFY方式表示)google搜索XmlMassUpdate会返回一个有用的接缝看点击。

相关问题