将web api appSettings作为名称 - 值对的集合

时间:2017-03-22 04:19:01

标签: asp.net-web-api

有没有办法将我的web.config文件的'appSettings'部分中的值检索为一组名称 - 值对?我想创建一个api控制器方法来返回这个对象,这样我就可以从我的前端访问设置集合(理想情况下作为JSON对象)。我尝试返回WebConfigurationManager.AppSettings,但它只返回一个只包含设置名称的字符串数组(没有值)。我一直在寻找答案近2个小时,却找不到答案。有帮助吗?感谢。

1 个答案:

答案 0 :(得分:1)

我知道没有为此提供的简单机制,因为NameValueCollection类型不仅仅是一个简单的名称/值字典,并且可能并不总是很容易表示为一个。

NameValueCollection 中的每个键可能 多个值

如果为特定名称分配了多个值,则该名称将成为所有这些值的逗号分隔列表值。如果这些值中的任何一个本身包含逗号,那么这可以使这些值难以解密(即应用程序/上下文特定)。

因此,您必须决定在每种情况下如何处理特定 NameValueCollection 的内容。

如果您的特定 AppSettings 包含真正简单的名称/值对,或者您乐意处理任何逗号分隔的多值,那么您当然可以执行类似的操作:

var dict = new System.Collections.Generic.Dictionary<String, String>();
var settings = System.Configuration.ConfigurationManager.AppSettings;

foreach ( var k in settings.AllKeys )
{
    dict.Add(k, settings[k]);
}

var json = Newtonsoft.Json.JsonConvert.SerializeObject(dict);

如果没有提供完整的解决方案,希望这会让你走上正轨。