Я написал службу окна, и он принимает входные данные из файла xml. Этот файл помещается в папку самого .exe. Но я хочу, чтобы эта служба окна принимала входные данные из App.config. Я прочитал, что имя конфигурационного файла приложения изменилось на service.exe.config, и каждый, где это описано, как мы можем получить строку подключения от этого. Может кто-нибудь сказать мне способ получить настройки приложения из конфигурации приложения в службе окна.App config in Window Service
У меня много проблем, но я могу сделать это. Текущий код:
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 недоступен в режиме выпуска. Может ли кто-нибудь дать мне способ доступа к конфигурации приложения, чтобы передать входной параметр в службу Window.
Можете ли вы объяснить, почему использование 'ConfigurationManager.AppSettings' не работает? Это был обычный способ использования локального файла конфигурации –
Это просто не чтение из app.config.In режиме выпуска app config превращается в program.exe.config, и я считаю, что проблема. Но я не уверен, просто tryng чтобы заставить его работать – vish1990
Для того, чтобы 'ConfigurationManager' работал из коробки, имя файла конфигурации должно соответствовать имени exe с добавлением' .config', в соответствии с ответом @ dotnetstep –