Различия в поведении между системами.Сеть.Конфигурация.WebConfigurationManager и системы.Конфигурация.Configurationmanager в
у меня были некоторые проблемы на тестовом сервере с ASP.NET сайт. Я прикалывалась, и дома каталог веб-сайта по умолчанию указал на неправильное место. Когда я попробовал:
ConfigurationManager.ConnectionStrings["connectionString"];
Он вернул null, но
using System.Web.Configuration;
/* ... */
var rootWebConfig =
WebConfigurationManager.OpenWebConfiguration(Request.ApplicationPath);
WebConfigurationManager.OpenWebConfiguration(Request.ApplicationPath);
rootWebConfig.ConnectionStrings.ConnectionStrings["connectionString"].ConnectionString;`
возвращает правильную строку подключения.
каковы все различия между этими двумя подходами?
EDIT: то, что я действительно спрашиваю, почему ConfigurationManager
ошибка подхода при неправильном домашнем каталоге установите, но преуспевает в противном случае, и WebConfigurationManager
успешно независимо от того, правильно ли установлен домашний каталог? Есть ли другие различия, такие как предположения о контроле доступа?
2 ответов
Попробуйте Это:
поместите точку останова, где находится оператор ConfigurationManager, и выполните следующее В окне немедленного вывода
((ConfigurationSection) ConfigurationManager.GetSection("connectionStrings")).ElementInformation
. Моя машина сообщает источник: "C:\Users\John\Documents\Visual Studio 2008\проекты\StackOverflowCode\WebApplication1\web.config", как показано ниже.
Примечание: следующее также показывает, что мой доступ к ASP.NET веб.конфиг.
{System.Configuration.ElementInformation}
Errors: {System.Configuration.ConfigurationException[0]}
IsCollection: true
IsLocked: false
IsPresent: true
LineNumber: 17
Properties: {System.Configuration.PropertyInformationCollection}
Source: "C:\Users\John\Documents\Visual Studio 2008\Projects\StackOverflowCode\WebApplication1\web.config"
Type: {Name = "ConnectionStringsSection" FullName = "System.Configuration.ConnectionStringsSection"}
Validator: {System.Configuration.DefaultValidator}
и когда я запустить ConfigurationManager.ConnectionStrings.ElementInformation
Я источник:нуль, который является правильным для моего веб-приложения.
что вы получаете для пути источника конфигурации???
Немедленное Предположение
ConfigurationManager.ConnectionStrings["connectionString"];
может искать расположение конфигурации, которое не обязательно совпадает с корневым веб-приложением веб-приложения.конфиг. Вероятно, он ищет в каталоге Windows (e.g в другом месте или для машины.конфигурация.) Попытка найти подходящий тест для этого хотя.
намерения каждого менеджера
первый класс предоставляет доступ к общим файлам конфигурации клиента (например, app.config) и второй для файлов веб-приложения (например, веб.конфигурация.)