首页 > 解决方案 > 如何从 web.config 中提取自定义 XML 以在另一个类中使用?

问题描述

我目前有一个名为PrioritizationSettings.config的 xml 文件,我需要将其合并到 Web.config 中。

我已将它直接移动到 Web.config 中,因为它在所有配置中都是相同的。

我注意到该项目正在使用这个不再存在的旧文件路径,因为我将 XML 直接移动到 Web.config 中。

public static PrioritizationSettings LoadPrioritizeSettings()
        {
            return LoadPrioritizeSettings(AppDomain.CurrentDomain.BaseDirectory + "__Configs\\PrioritizationSettings.config");
        }

我希望能够从这里访问 Web.config 中的 PrioritizationSettings。因此,我可以只传递现在存在于 Web.Config 中的 XML 部分,而不是传递整个 XML 文件

在不使用 ConfigurationManager.GetSection() 的情况下是否有另一种方法可以做到这一点?我看过这个,我担心它可能会涉及更多。我只需要提取 XML。

标签: c#xmlweb-config

解决方案


这似乎正在做我想做的事。

public static PrioritizationSettings LoadPrioritizeSettings()
        {
            return LoadPrioritizeSettings(AppDomain.CurrentDomain.BaseDirectory + "Web.config");
        }

我现在传入整个 Web.config 文件。在 LoadPrioritizeSettings 内部,我有以下代码:

public static PrioritizationSettings LoadPrioritizeSettings(string configFile)
    {
        XmlReader xmlReader;
        try { xmlReader = XmlReader.Create(configFile); }
        catch (Exception ex) { throw ex; }

        if (xmlReader == null)
            return null;

        XmlDocument xmlDoc = new System.Xml.XmlDocument();
        xmlReader.Read();
        xmlDoc.Load(xmlReader);
        xmlReader.Close();

        XmlNode xmlConfiguration = xmlDoc["configuration"];
        if (xmlConfiguration == null)
            throw new Exception("The root element (PrioritizationSettings) of the config file could not be found.");
        XmlNode xmlPrioritizeSettings = xmlConfiguration["PrioritizationSettings"];
        return prioritizeSettings;
    }

所以我可以从 web.config 中获取 PrioritizationSetting 节点。


推荐阅读