-1

首先让我说我知道类库应该获取其配置的方式是来自引用项目的配置。在我的例子中,引用项目是一个 MVC Web 应用程序。

虽然这通常是有道理的,但我认为当您的类库只是为了提供对 Web 服务的访问时,它不会这样做。当您右键单击“更新服务引用”的服务引用时,Visual Studio 有一个功能。这将更新app.config类库中的文件,而不是引用项目中的配置文件。app.config如果文件将被忽略,则不是很有用。

当然,您可以继续将app.config文件的新版本复制到(在这种情况下)您web.config在不同项目中的文件中,但这很痛苦,您必须记住这样做。更重要的是,我认为将配置设置保留在 Web 服务项目中在语义上会更好。如果该 Web 服务更改了 URL,我希望所有引用该项目的东西都能获取新的 URL。如果引用类库的东西想要使用不同的 URL,它的配置可以覆盖类库的,但我仍然希望类库有一组默认设置。我不想更改每个引用项目的配置。

考虑到所有这些,有没有办法强制/破解/任何 .NET 将类库中的配置用于 WCF 端点等,而不是查看引用项目配置中的值?

4

2 回答 2

0

抱歉,这不是它的工作方式。

您的服务的位置和其他参数可以从一种环境更改为另一种环境。这些更改必须反映在环境的 web.config 中。

于 2013-03-13T17:08:43.830 回答
0

基本上,可以通过做很多工作来为类库创建一个 app.config,比如在构建后事件中手动将 app.config 文件复制到 bin 目录,并手动读取值从它并将它们插入到您的 Web 服务绑定中。但是我决定放弃并将它们复制到我的 web.config 文件中(在这种情况下,因为我正在编写一个 Web 应用程序),然后每次我从 Visual Studio 刷新 Web 服务时手动更新它们。如果您实际上有几个不同的应用程序访问共享库,我仍然认为这样做是合法的,因为您可能希望该库仅引用一个 Web 服务,如果它发生更改,您只需更改该库的.config文件即可所有不同的应用程序'.config文件。

为什么 VS 创建一个名为 app.config 的文件对我来说是个谜,因为我认为它具有高度误导性;它使它看起来像这个文件的配置设置将被读取,而实际上它们将被忽略。更合适的文件名更像是“shouldBeCopiedIntoYourActualAppOrWeb.config”。

于 2013-03-14T10:01:26.023 回答