ProviderBase
сгенерирует ConfigurationException
, если к моменту его получения в коллекции конфигурации останутся какие-либо записи, поэтому каждый провайдер удаляет свои записи конфигурации перед вызовом base.Initialize
.
Проблема, как вы обнаружили в результате этого ответа , заключается в том, что вы должны получить свои значения перед вызовом base.Initialize
.
Извините, я пропустил это впервый взгляд.
Остальная часть этого поста является исторической, и хотя технически правильно пропускает существенную проблему здесь, как перечислено выше.
Первый - попробуйте WebConfigurationManager.ConnectionStrings
.
WebConfigurationManager
обрабатывает применение иерархии web.config на всем пути от вашего windows \ microsoft.net \ framework \ 2.0xxxx \ web.config до вашего приложения.
Это поведение отсутствует в ConfigurationManager
, который обычно имеет дело с machine.config для app.config.
Если это не решит вашу проблему, вы должны перезаписать значение в другом месте вашего кода,если действительно _ConnectionStringName
назначается правильно в Initialize
.
Сначала установите точку останова и убедитесь, что _ConnectionStringName
устанавливается так, как ожидается.
Затем найдите все ссылки на полеи убедитесь, что у вас нет ошибки.
ThКонечно, предполагается, что _ConnectionStringName
является частным полем.Если это не так, сделайте это и поищите ошибку компиляции.