Web.config值通过层传递

时间:2009-05-15 11:15:58

标签: web-config

我有一个.NET 2008解决方案,其项目充当WCF服务主机。该项目有一个web.config文件,其中包含的设置将在项目完成时由安装程序替换。这些设置是组成连接字符串和其他一些组件的组件。

此WCF项目引用业务逻辑项目(实现服务代码的类库),该项目又引用使用实体框架的DAL项目。

我想知道的是如何将WCF项目中的web.config中的值传递给DAL?不使用我在OpenMappedExeConfiguration中看到的任何相对路径。我需要根据web.config文件中的设置在DAL中建立连接字符串。

感谢您的回答。

2 个答案:

答案 0 :(得分:1)

我在1个文件夹中存储连接字符串等共享内容,甚至不在源代码所在的文件夹下。在DAL层,我只需使用ConfigurationManager来获取它。

在启动应用程序的项目中(在您的情况下,它是WCF项目),我从外部“config”文件夹 AS A LINK 添加“ConnectionStrings.config”文件(在visual studio中) ,按“添加现有项目” - >选择项目 - >“添加”按钮旁边是此选项所在的箭头)。然后我只是通过该文件属性(点击解决方案资源管理器中的文件 - >按F4)设置它作为项目的内容,如果修改为部署文件夹应该再次复制它。然后我将一个新的app.config文件添加到项目中,其中包括“ConnectionString.config”。

connectionstrings.config的来源:

<connectionStrings>
  <add name="MyConnectionString"
     connectionString="Data source=tralala"/>
</connectionStrings>

WCF项目中app.config的来源:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <connectionStrings configSource="ConnectionStrings.config"></connectionStrings>
</configuration>

我不确定这是最好的方法。但到目前为止一切顺利。

答案 1 :(得分:0)

不幸的是,您的问题的答案是“复制并粘贴”。这一直是真的。

与此规则的例外最接近的是“新的”.NET 2.0设置文件。因为这些的结构和默认值是定义组件的程序集的一部分,所以组件在启动时可以将默认值写入应用程序配置。我想可以将一段代码与一段代码结合使用,以便在包含的应用程序启动之前将默认值写出来,在第一次使用应用程序之前,在配置文件中保留默认值。