Чтение из файла конфигурации в веб-службе WCF

Я пытаюсь прочитать из файла Constants.config в веб-службе WCF без поддержки ASP.NET.

Configuration rootWebConfig1 = Configuration.WebConfigurationManager.OpenWebConfiguration("Constants.config");

Этот вызов вызвал исключение, и похоже, что OpenWebConfiguration пытается открыть файл конфигурации в другом месте. Как я могу узнать, где он ищет и как я могу указать целевую папку?

Большое спасибо. Илан.


person Ilan    schedule 14.08.2011    source источник
comment
КАКОЕ исключение было выдано?? Пожалуйста, предоставьте всю необходимую информацию   -  person marc_s    schedule 14.08.2011
comment
Поскольку я делаю это в статическом конструкторе, сообщение об исключении - это что-то не так с типом. Не что-то полезное.   -  person Ilan    schedule 14.08.2011


Ответы (2)


OpenWebConfiguration предназначен для открытия файла веб-конфигурации — например, только web.config...

Насколько мне известно, вы не можете использовать его для открытия собственных файлов конфигурации.

Однако вы можете использовать обычный класс Configuration из пространства имен .NET System.Configuration. Ознакомьтесь с серией из трех частей Джона Ристы о настройке .NET 2.0 на CodeProject:

Настоятельно рекомендуется, хорошо написано и очень полезно!

В части 3 Джон показывает, как вы можете использовать свои собственные файлы конфигурации и открывать их с помощью класса ExeConfigurationFileMap:

ExeConfigurationFileMap exeMap = new ExeConfigurationFileMap();
exeMap.ExeConfigFilename = "C:\Application\Constants.config";

Configuration exeConfig = 
  ConfigurationManager.OpenMappedExeConfiguration(exeMap, ConfigurationUserLevel.None);
person marc_s    schedule 14.08.2011
comment
класс конфигурации устарел, ConfigurationManager. Однако вы правы. - person Justin Dearing; 15.08.2011

Вы можете сделать то, что сказал marc_s, и использовать Конфигурация (устаревшая) или ConfigurationManager, или если вы хотите, чтобы служба WCF поддерживала функции ASP.NET, вы можете включить Совместимость с ASP.NET, украсив реализацию службы тегом AspNetCompatibilityRequirementsAttribute.

Если служба будет привязана к сайту ASP.NET, всегда размещается в IIS и будет использовать сеанс ASP.NET, возможно, это правильный путь. Если не использовать класс ConfigurationManager.

person Justin Dearing    schedule 14.08.2011