вземете препратка към секцията customErrors на ASP.NET web.config

Опитвам се да получа препратка към секцията customErrors на web.config. Когато използвам следния код, винаги получавам нула. Нямам този проблем, когато получа препратка към персонализиран раздел, който съм създал, така че съм малко изумен защо това не работи.

CustomErrorsSection customErrorSection =
    ConfigurationManager.GetSection("customErrors") as CustomErrorsSection;

Пробвах и това:

CustomErrorsSection customErrorSection = 
    WebConfigurationManager.GetSection("customErrors") as CustomErrorsSection;

Пробвах и това:

CustomErrorsSection customErrorSection =
    WebConfigurationManager.GetWebApplicationSection("customErrors") as CustomErrorSection;

РЕДАКТИРАНЕ:

АРГХ! Такъв е случаят с повечето неща, за които разбрах отговора веднага след като зададох въпроса.

Това работи за мен:

System.Configuration.Configuration configuration = WebConfigurationManager.OpenWebConfiguration("/");
CustomErrorsSection customErrorsSection = (CustomErrorsSection)configuration.GetSection("system.web/customErrors");

Или по-просто така:

CustomErrorsSection customErrors = (CustomErrorsSection) WebConfigurationManager.OpenWebConfiguration("/").GetSection("system.web/customErrors");

Това също работи:

CustomErrorsSection customErrorsSection = ConfigurationManager.GetSection("system.web/customErrors") as CustomErrorsSection;

Така че предполагам, че сега разбирам защо имах проблема на първо място. Неправилно си помислих, че мога да получа препратка към раздела customErrors, като се опитам да GetSection("customErrors"), но не успях да му кажа в каква главна секция живее и базирах опитите си на факта, че знаех как да получите персонализирана секция, когато не успях да осъзная, че моята персонализирана секция е коренът на секцията, така че не трябваше да добавям нещо като system.Web/ пред нея, когато извиках GetSection().


person Frank Hale    schedule 25.11.2011    source източник
comment
Може би глупав въпрос, но разделът съществува ли във вашия конфигурационен файл?   -  person Oded    schedule 25.11.2011
comment
Легитимен и може да помогне на другите. Не го изтривайте.   -  person Oded    schedule 25.11.2011
comment
Благодаря! Бях озадачен, защото получаването на секцията customError беше различно от получаването на персонализирана секция. Реших, че ще е същото.   -  person Frank Hale    schedule 25.11.2011


Отговори (1)


Опитайте тази:

var configuration = WebConfigurationManager.OpenWebConfiguration("~/Web.config");

// Get the section.
CustomErrorsSection customErrors =
    (CustomErrorsSection)configuration.GetSection("system.web/customErrors");

Повече по темата тук: CustomError Class

person Leniel Maccaferri    schedule 25.11.2011
comment
Благодаря! Прекарах известно време в търсене на това и се върнах на страницата на Microsoft веднага след публикуването и разбрах, че не съм превъртял достатъчно надолу първите няколко пъти, когато открих страницата. Понякога сте толкова разочаровани, опитвайки се да намерите отговор, че не можете да мислите достатъчно ясно, за да интерпретирате материала, който търсите. - person Frank Hale; 25.11.2011
comment
Ще маркирам отговора ви като правилен, но вашият кодов фрагмент показва само част от решението, към което сте се свързали. Не сте поставили частта, която декларира откъде идва конфигурацията. - person Frank Hale; 25.11.2011
comment
конфигурация = WebConfigurationManager.OpenWebConfiguration(~/Web.config); CustomErrorsSection - person ; 30.04.2014
comment
@Darren Благодаря за добавянето на липсващата част! :) Актуализира отговора. - person Leniel Maccaferri; 30.04.2014