【问题标题】:web.config issue in ASP.NetASP.Net 中的 web.config 问题
【发布时间】:2011-04-23 06:18:00
【问题描述】:

我正在使用 VSTS 2010 + ASP.Net + C# 4.0 来学习其他人的 WCF 应用程序代码。我发现除了 Web.Config,还有 Web.Debug.config 和 Web.Release.config。我搜索了 Web.Config 的内容,但找不到对 Web.Debug.config 和 Web.Release.config 的任何引用。但是在 VSTS 2010 IDE 解决方案资源管理器中,我发现从 Web.Config 指向 Web.Debug.config 和 Web.Release.config 的箭头 - 所以似乎存在引用关系。这让我很困惑。

在3个config文件中,都有相同的项不同的值,例如web.config中有这样定义的连接字符串DBConnectinString,

  <connectionStrings>
    <add name="DBConnectinString" connectionString="data Source=10.10.10.123;uid=foo;pwd=foo;database=FOO" providerName="System.Data.SqlClient"/>
  </connectionStrings>

而在Web.Debug.config中,有一个连接字符串DBConnectinString,其定义方式几乎相同,但值不同,

  <connectionStrings>
    <add name="DBConnectinString" connectionString="data Source=10.10.10.124;uid=foo;pwd=foo;database=FOO" providerName="System.Data.SqlClient"/>
  </connectionStrings>

我的问题是,

  1. Web.Config 和 Web.Debug.config/Web.Release.config 是什么关系?
  2. 为什么要在 Web.Config 和 Web.Debug.config/Web.Release.config 中定义同一个项不同的值?

【问题讨论】:

    标签: c# asp.net .net visual-studio-2010 web-config


    【解决方案1】:

    对于不同的设置,您有不同的配置文件。将 Debug 视为您的本地环境设置,例如测试服务器的连接字符串、调试变量开启等。发布设置将包含生产服务器的连接字符串等设置。

    在顶部栏中,运行调试旁边应该是一个下拉菜单,其中包含所有可用设置。您也可以添加一些。

    此设置对于一键部署非常有用,例如带有 VS2010 的新 WebDeploy

    编辑
    此链接How to use web.config transforms to replace appSettings and connectionStrings? 应该向您展示有关 web.config 转换的基本演练

    【讨论】:

    • 谢谢。还有两个问题,1. Web.Debug.Config 中定义的连接字符串的优先级高于web.config(即会覆盖web.config 中定义的值)? 2、在运行时,比如IIS 7.0,会同时使用web.config和Web.Debug.Config(是否需要将两个配置文件都部署到IIS)?还是只使用 web.config?
    • 对于 Web 部署,我想您的意思是当我们为 WCF 项目选择“发布”时?如果是这样,从发布对话框中,如果我选择 WebDeploy 作为发布方法,我看不到任何使用 Web.Debug.Config 或 Web.Debug.Release 的选项。有没有cmets?
    • 另外一个困惑是我在web.debug.config上面发现了一个叫做,配置xmlns:xdt="schemas.microsoft.com/XML-Document-Transform的项,这是什么意思?
    • 哪些设置会覆盖哪些与 web.config 转换有关的设置。要覆盖设置,例如具有默认设置和特定于生产,您需要向节点添加特定的 xml 属性。这就是所谓的配置转换,或类似的东西。如果您添加了前面提到的属性,您在下拉列表中选择的设置将替换默认设置
    • 在发布 -> Web 部署期间,如何选择使用哪个 web.config?
    【解决方案2】:

    这是 Visual Studio 2010 中的新功能。它允许您使用不同的配置文件来构建配置方案。这样,当您在调试模式下构建时,它将包含 Web.Debug.Config 文件,在构建发布时也是如此。

    这允许您例如为您的数据库维护不同的配置 - 一个用于您的开发环境和您的实时环境。

    希望有帮助!

    【讨论】:

    • 这仅取决于您使用的构建配置。您可以查看以下链接:stackoverflow.com/questions/2791236/… blogs.msdn.com/b/webdevtools/archive/2009/05/04/… 您只需部署 Web.config 文件。 VIsual Studio 已采用正确的版本并在您的构建中替换它。
    • IIS 将只使用“Web.config”,其他的都不适用。我认为您的第一个问题是正确的,但应该有人确认。
    • 没有“更高优先级”的 Web.config 文件被您的解决方案中的 Web.*.config 文件之一替换。
    • 没有合并操作,其中一个文件被用作精确副本并重命名为web.config。您还可以添加具有适当配置的 onw 方案,例如用于测试构建配置的 Web.Test.Config。
    • 这些 cmets 有点误导。 web..configs 不是用来替换 web.config,它们是用来转换基础 web.config。例如,如果您有一个 web.config 和一个空白的 web.release.config ...您最终不会在部署的解决方案中得到一个空白的 web.config。 .debug 和 .release 配置应用特殊转换,使用您指定的转换将核心 web.config 中的信息转换为环境特定值。这就是顶部的命名空间声明正在做的事情。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-25
    • 2010-10-18
    • 1970-01-01
    • 2012-03-23
    • 1970-01-01
    • 2019-02-21
    相关资源
    最近更新 更多