【问题标题】:IIS WCF Service not using app.configIIS WCF 服务未使用 app.config
【发布时间】:2012-04-02 00:32:50
【问题描述】:

我有一个托管在 IIS 中的 .NET 3.5 WCF 服务。项目服务库有一个 app.config 文件,其中包含一些配置设置(数据库连接字符串等)。我通过 Visual Studio 中的网站项目部署项目,该项目生成 web.config 来管理端点。有没有办法可以将我的服务库中的 app.config 设置放入 web.config? IIS 托管服务似乎使用了设置设计器的默认值,甚至忽略了 app.config 中复制的显式。我猜这与 DLL 无法使用 app.config 的事实有关。

我的服务应用程序设置为从 [MyAssembly].Properties.Settings.Default 命名空间中提取设置设置。

【问题讨论】:

  • 当 WCF 服务托管在 IIS 中时,它的行为就像一个 Web 应用程序,因此将使用 web.config - 而不是它的 app.config .... 还有:.NET 配置系统从不将app.config 用于类库——您需要将设置放入托管应用程序的配置中。

标签: wcf iis .net-3.5 web-config


【解决方案1】:

可以使用外部配置文件吗?

您的 web.config:

<config>
  ...
  <connectionStrings configSource="myConnections.config"></connectionStrings>
</config>

然后是您的外部 myConnections.config 文件:

<connectionStrings>
  <add ... />
</connectionStrings>

您可以从主 web.config 文件中引用多个外部配置文件。请参阅this blog post,了解如何/为什么要这样做。

我希望这会有所帮助!

【讨论】:

  • 服务代码当前配置为从 [MyAssembly].Properties.Settings.Default 命名空间中提取设置。外部连接配置文件会在同一个命名空间中定义设置吗?
  • 我为我拥有的一个简单控制台应用程序创建了一个设置文件,并在“设置”中创建了一个连接字符串。在我的 app.config 中,我看到了这个:&lt;connectionStrings&gt; &lt;add name="TestCache1.Properties.Settings.Setting" connectionString="Data Source=myServer;Initial Catalog=myDatabase;Integrated Security=True" providerName="System.Data.SqlClient" /&gt; &lt;/connectionStrings&gt;。所以我不明白为什么我不能改变它来将我的连接字符串拉到一个外部文件中并像我在上面的答案中那样引用它。它似乎有效。
  • 放弃你的想法,我意识到我可以将设置直接放在 web.config 中。我将连接字符串放在(默认情况下,为空) 部分中,并在那里添加了一个 appSettings 部分组(如在我的 app.config 中)。这里的关键是使用服务库正在寻找的程序集名称。谢谢。我肯定看到外部配置文件是如何工作的,但是,我认为现在将它们放在 web.config 中就足够了。
猜你喜欢
  • 2013-08-17
  • 1970-01-01
  • 1970-01-01
  • 2011-12-25
  • 1970-01-01
  • 1970-01-01
  • 2013-12-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多