【问题标题】:C# Reading Configuration settingsC# 读取配置设置
【发布时间】:2010-12-30 20:11:36
【问题描述】:

我有一个 C# 类库 A,它的 App.config 中有一些配置设置,我使用

访问它们
Method1()
{
string connectionString = ConfigurationManager.AppSettings["ConnectionString"];
}

但是当我从我的 ASP Web 项目 B 中调用方法 1() 时,它在类库 A 中找不到配置设置

知道这里发生了什么吗?

【问题讨论】:

  • 对于 Web 应用程序,使用 WebConfigurationManager 而不是 ConfigurationManager

标签: c# configuration app-config configurationmanager


【解决方案1】:

.Net 运行时创建的整个配置管理结构是特定于进程的。不是特定于装配的。这意味着每个正在运行的可执行文件都会获得一个 app.config。一个 Web 项目得到一个 web,config(实际上一个 Web 项目可以有多个 web.configs),但是程序集不能有自己的 app.configs,它们可以有代码来读取配置文件中的配置设置,无论它们是什么进程在中引用(使用程序集作为 winforms 应用程序中的引用,然后它可以在 MyWinformsApplication.exe.config 中查看配置设置;在 ASP 中使用程序集。 Net web 应用,然后它可以在 web 应用的 web.config 中看到配置设置...

【讨论】:

    【解决方案2】:

    配置设置必须复制到您的 web.config。本质上,每个项目只有一个配置管理器读取的默认配置文件。

    【讨论】:

      【解决方案3】:

      库没有自己的配置文件。配置设置应在使用该库的 exe 中定义

      【讨论】:

        【解决方案4】:

        我相信您可以使用 OpenExeConfiguration 来做到这一点:

        string exePath = "<full path and name of the app .exe file>";
        
        System.Configuration.Configuration otherConfig = 
             ConfigurationManager.OpenExeConfiguration(exePath);
        

        您可以将其他 .exe 的路径放在网络应用程序的 web.config 中(例如,在 appSettings 部分中),然后从那里读取它,这比在这里硬编码要好。

        查看该配置文件中的 appSettings:

        AppSettingsSection otherAppSettings = otherConfig.AppSettings;
        

        这个MSDN page 可能会有所帮助。

        【讨论】:

          【解决方案5】:

          它正在您的网络项目中寻找配置设置。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2013-11-07
            • 2011-06-16
            • 2012-08-02
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多