Пространство имен WCF и System.Configuration
-
04-07-2019 - |
Вопрос
Я получил ошибку, когда ссылочная сборка .NET Framework 2.0 попыталась выполнить следующую строку кода в службе WCF, размещенной на IIS:
Сообщение об ошибке:
exePath должен быть указан, когда не работает внутри автономного exe.
Исходный код:
ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
Кто-нибудь сталкивался с этой проблемой и знает, как ее решить?
РЕДАКТИРОВАТЬ: Мой вопрос: как лучше всего открыть файл конфигурации (app.config и web.config) из службы WCF, которая обратно совместима со сборкой .NET 2.0? р>
Решение 2
Мне удалось решить проблему с настройкой, удалив существующий код из моего исчерпывающего ответа и заменив его следующей реализацией ConfigurationManager:
string MySetting = ConfigurationManager.AppSettings.Get("MyAppSetting");
Если работает для приложений ASP.NET, приложений WinForms и служб WCF. Я только что перепроектировал первоначальную реализацию моей библиотеки классов 3 года назад ....
Другие советы
Ссылочная сборка .NET 2.0 является частью библиотеки классов, которую я разработал для нашей корпоративной библиотеки для решения общих задач. Он был предназначен для использования в приложениях ASP.NET и WinForm. Р>
Вот исходный код, который я использовал, чтобы определить, какой тип файла конфигурации открыть:
//Open app.config or web.config file
if (HttpContext.Current != null)
this.m_ConfigFile = WebConfigurationManager.OpenWebConfiguration("~");
else
this.m_ConfigFile = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
Это зависит от того, чего вы пытаетесь достичь. В ASP.NET вы обычно не будете использовать ConfigurationManager для подобных вещей, а вместо этого будете использовать WebConfigurationManager. Тем не менее, нет точного эквивалента, поскольку на самом деле пользовательские / роуминговые / и т. Д. Вещи, которые позволяет OpenExeConfiguration, не имеют смысла в веб-приложении.
Зачем тебе это нужно?