繁体   English   中英

WebConfigurationManager.AppSettings在哪里写入其数据? 不去web.config

[英]Where does WebConfigurationManager.AppSettings write its data? Not to web.config

我正在尝试使用WebConfigurationManager.AppSettings [string]读取/写入要存储在服务器上的配置文件中的值。 我以为它读/写了Web.config文件,或者也许是app.config。 但是,我运行了以下测试代码-第一次(根据需要)它会引发异常,但是将“ NOTSet”写入该配置条目-这使我可以轻松地去编辑文件并将其更改为正确的值。

第二次运行后,我可以看到返回的值是“ NOTSet”-完全是我想要的。 该代码完全按计划工作。

除了-写在哪里? 我做了一个'baregrep NOTSet' '-递归搜索整个项目源目录,仅在设置var的代码中找到该行-这意味着它没有写入整个项目树中的任何内容-不是web.config,app.config或任何其他文件。

我叹了口气,说它必须在注册表中-我在整个注册表中搜索了具有该值的任何东西,然后尝试了键值-没什么。

但是,运行程序正在提取上次运行时设置的值! 我的数据去了哪里? 我希望能够编辑值-更重要的是,拥有一个文件,我可以将其复制到具有正确设置的所有GUID的生产Web服务器上。

public enum Guids
{
    IncidentSourceEnumPortal,
    WorkItemClass,
    WorkItemManagementPack
}

public class GuidConsts
{
  static readonly Dictionary<Guids, Guid>  GuidList = new Dictionary<Guids, Guid>();

    public static Guid Guids(Guids guidId)
    {
        if (!GuidList.ContainsKey(guidId))
        {
            string id = WebConfigurationManager.AppSettings[guidId.ToString()];

            Guid newGuid;

            if ( (id == null) || Guid.TryParse(id, out newGuid))
            {
                WebConfigurationManager.AppSettings[guidId.ToString()] = "NOTSet";
                throw new Exception(String.Format("Invalid guid - not found in Config: {0}", guidId));
            }
            GuidList.Add(guidId, newGuid);
            return newGuid;
        }

        return GuidList[guidId];
    }
}

要保存web.config文件,您需要调用Configuration.Save()以保留更改。 当您更改值时,它们不会自动保存:

https://msdn.microsoft.com/en-us/library/ms134088%28v=vs.110%29.aspx

无论如何,实际上并不建议立即写入web.config,因为这会导致应用程序池重新启动,从而可能导致整个应用程序失去会话状态,并且可能导致您不想发生的其他应用程序范围内的事情。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM