从web.config获取全局配置的Api客户端

时间:2013-01-14 03:27:57

标签: c#

在我的应用程序中,我想做类似的事情:

SomeApiClient apiClient = new SomeApiClient();

List<User> apiClient.getUsers();

在我的web.config中,我将提供一些配置键/值对。

如何编写SomeApiClient的构造函数,使其从web.config加载值,但不是每次都只在应用程序启动或第一次请求时加载一次?

1 个答案:

答案 0 :(得分:2)

你好。

namespace dm2
{
    using System.Collections.Specialized;
    using System.Configuration;

    public class SomeApiClient
    {
        internal static NameValueCollection Config
        {
            get
            {
                if (config == null) config = ConfigurationManager.AppSettings;
                return config;
            }
        }

        internal static NameValueCollection config;
    }
}

基本上你只是在非静态类中使用静态属性...所以为了获得配置设置,

public void DoFunConfigStuff()
{
    for (var i = 0; i < Config.Count;i++ )
    {
        Console.WriteLine("[{0}]: {1}",Config.Keys[i] ,Config[i]);
    }
}

由于您提到了web.config,我假设这是一个Web应用程序。所以我想指出,您应该期望您的应用程序池可以随时回收,此时这将导致静态getter重新评估并加载新设置。最好不回复此问题。

您可以做的一件事就是将此信息序列化为某种媒介,无论是磁盘还是数据库,然后使用某种数据库交换机或强制重新加载的网页。

因此在该getter中它将检查序列化数据,如果它不存在,请检查web.config,然后将该数据保存在某处。下次它被回收后,它将获取旧数据。我想这真的取决于你的设置。