Window Service中的App配置

时间:2014-12-18 10:35:50

标签: c# .net

我编写了一个窗口服务,它从xml文件中获取输入。该文件放在.exe本身的文件夹中。但我希望该窗口服务从App.config中获取输入。 我读到App配置名称已更改为service.exe.config并且每个地方都有关于我们如何从中访问连接字符串。有人告诉我从窗口服务中的app config获取应用程序设置的方法。

我有一个google很多,但可以做到这一点。 目前的代码是:

 protected override void OnStart(string[] args)
    {

         current_directory = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
        XmlDocument xml = new XmlDocument();
        try
        {
            string Xml_Path = System.AppDomain.CurrentDomain.BaseDirectory;
            xml.Load(current_directory + "\\Data.xml");//suppose that myXmlString contains "<Names>...</Names>"


            XmlNodeList xnList = xml.SelectNodes("/Names/Name");
            foreach (XmlNode xn in xnList)
            {
                strDir = xn["Directory"].InnerText;
                fileMask = xn["FileMask"].InnerText;
                strBatfile = xn["Batch"].InnerText;
                strlog = xn["Log"].InnerText;


            }
            //strDir = ConfigurationManager.AppSettings["Directory"];
            //fileMask = ConfigurationManager.AppSettings["FileMask"];
            //strBatfile = ConfigurationManager.AppSettings["Batch"];
            //strlog = ConfigurationManager.AppSettings["Log"];


            m_Watcher = new FileSystemWatcher();


            m_Watcher.Filter = fileMask;
            m_Watcher.Path = strDir + "\\";
            m_Watcher.NotifyFilter = NotifyFilters.LastAccess | NotifyFilters.LastWrite
                             | NotifyFilters.FileName | NotifyFilters.DirectoryName;




            m_Watcher.Created += new FileSystemEventHandler(OnCreated);

            m_Watcher.Deleted += new FileSystemEventHandler(OnDeleated);
            m_Watcher.Renamed += new RenamedEventHandler(OnRenamed);


            m_Watcher.EnableRaisingEvents = true;
        }
        catch (Exception exception)
        {
            CustomException.Write(CustomException.CreateExceptionString(exception.ToString()));
        }

    }

但有点像。 //strDir = ConfigurationManager.AppSettings["Directory"]; //fileMask = ConfigurationManager.AppSettings["FileMask"]; //strBatfile = ConfigurationManager.AppSettings["Batch"]; //strlog = ConfigurationManager.AppSettings["Log"]; 不起作用。在发布模式下,xml也不可用。 有人可以给我访问app config的方法来将输入参数传递给Window服务。

1 个答案:

答案 0 :(得分:1)

如果您的窗口服务应用程序生成WindowService1.exe,那么您的配置文件App.config将更改为WindowService1.exe.config。

现在从配置文件中读取,您可以使用

ConfigurationManager.AppSettings["key"]

如果您无法获得ConfigurationManager,则必须添加对System.Configuration程序集的引用。