Различия в поведении между системами.Сеть.Конфигурация.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) и второй для файлов веб-приложения (например, веб.конфигурация.)