2010-10-09 60 views
1

我正在使用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的箭头 - 看起来有引用关系。这让我感到困惑。ASP.Net中的web.config问题

在所有3的配置文件中,有具有不同值的相同的项目,例如,在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> 

我quesiton是,

  1. Web.Config和Web.Debug.config/Web.Release.config之间的关系是什么?
  2. 为什么在Web.Config和Web.Debug.config/Web.Release.config中使用不同的值定义相同的项目?

回答

1

这是Visual Studio 2010中的新功能。它允许您为您创建不同的配置文件来构建配置方案。因此,当您以调试模式构建时,它将包含Web.Debug.Config文件,这与构建发布版时的文件相同。

这使您可以为您的数据库维护不同的配置 - 一个用于您的开发环境和您的实时环境。

希望有帮助!

+0

谢谢。还有两个问题,1. Web.Debug.Config中定义的连接字符串的优先级高于web.config(即将覆盖web.config中定义的值)? 2.在运行时,例如IIS 7.0,它将使用web.config和Web.Debug.Config(我们是否需要将两个配置文件都部署到IIS)?或者只是使用web.config? – George2 2010-10-09 17:18:47

+1

它仅取决于您使用的构建配置。您可以查看这些链接:http://stackoverflow.com/questions/2791236/what-is-the-web-debug-config-and-web-release-config-file-for http://blogs.msdn.com /b/webdevtools/archive/2009/05/04/web-deployment-web-config-transformation.aspx您必须仅部署Web.config文件。 VIsual Studio已经采用了正确的版本,并将其替换为您的版本。 – anthares 2010-10-09 17:20:38

+1

IIS将只使用“Web.config”,其他都不会应用。我认为你的第一个问题是正确的,但有人应该证实。 – Gup3rSuR4c 2010-10-09 17:21:04

2

您对不同的设置有不同的配置文件。考虑将Debug作为本地环境设置,例如连接到testserver,调试变量等。Release设置将包含像生产服务器的connectionstring这样的设置。

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

这个设置是一键式部署,如新WebDeploy与VS2010

编辑有用:
此链接How to use web.config transforms to replace appSettings and connectionStrings?会显示出基本的演练有关的web.config转换

+0

谢谢。还有两个问题,1. Web.Debug.Config中定义的连接字符串的优先级高于web.config(即将覆盖web.config中定义的值)? 2.在运行时,例如IIS 7.0,它将使用web.config和Web.Debug.Config(我们是否需要将两个配置文件都部署到IIS)?或者只是使用web.config? – George2 2010-10-09 17:21:06

+0

对于Web部署,我想你是指当我们为WCF项目选择“发布”时?如果是这样,从发布对话框,如果我选择WebDeploy作为发布方法,我看不到任何选项使用Web.Debug.Config或Web.Debug.Release。任何意见? – George2 2010-10-09 17:25:29

+0

另一个困惑是我在web.debug.config上找到了一个名为“配置xmlns”的项:xdt =“http://schemas.microsoft.com/XML-Document-Transform,这是什么意思? – George2 2010-10-09 17:33:37