2010-08-24 5 views
8

web.config의 <system.webServer><httpErrors> 요소에 errorMode 속성 값을 설정하는 방법은 무엇입니까?httpErrors errorMode을 프로그래밍 방식으로 확인하십시오.

ASP.NET 웹 응용 프로그램에서 "자체 진단"을 구현하려고합니다. 앱이 시작되면 web.config의 일부 설정을 통해 실행되고 올바르게 설정되었는지 확인합니다.

errormode가 <system.web><customErrors> 요소에 설정되어있는 경우이 코드가 매우 잘 작동하지만

, 사이트가 IIS7에 배포하고이 설정이 지금 system.webServer -> httpErrors에서 발견되면 그것이 작동하지 않습니다

var errSec = (CustomErrorsSection)HttpContext.Current.GetSection("system.web/customErrors"); 
Response.Write(errSec.Mode.ToString()); 

.

이 작동하지 않습니다

var errSec = (CustomErrorsSection)HttpContext.Current.GetSection("system.webServer/httpErrors"); 

그리고 CustomErrorsSection에 캐스팅 또한 나쁜 생각처럼 보인다는 더 나은 유형을 사용하는이 있어야한다?

IIS.NET의 HTTP Errors에서이 기사가 발견되었지만 Microsoft.Web.Administration 라이브러리에 의존하지 않고이 작업을 수행하기를 바랍니다.

제안 사항 아래의 제안에 따라 좋아

UPDATE

이, 나는이 시도 :

var errSec = (ConfigurationSection)HttpContext.Current.GetSection("system.webServer/httpErrors"); 
Response.Write(errSec.SectionInformation.GetRawXml().ToString()); 

을하지만 그 중 하나가 작동하지 않습니다는 errSec 개체가 null입니다. 그리고 부수적으로, 동일한 접근법을 사용하여 <system.web><customErrors> 섹션을로드하면 GetRawXml() 메서드 호출이 "이 작업은 런타임에 적용되지 않습니다."와 함께 실패합니다. 예외 메시지.

나는 전체 web.config를 XML 파일로로드하고 내가 필요한 요소를 얻는 방법을 알고있다. 하지만 좀 더 우아한 접근 방식이 필요하다는 생각이 들었습니다. XML로의 Web.config를 읽는 방법

:

var conf = XDocument.Load(System.Web.Hosting.HostingEnvironment.ApplicationPhysicalPath + "web.config"); 
var errMode = conf.Root.Element("system.webServer").Element("httpErrors").Attribute("errorMode").Value; 

...하지만 그건 그냥 불쾌한입니다! 그리고 errorMode 설정이 machine.config 또는 유사하게 설정되어 있으면 작동하지 않습니다.

답변

0

(CustomErrorsSection)HttpContext.Current.GetSection("system.webServer/httpErrors")이 섹션은 IIS7 구성 schema이고 ASP.NET 구성의 CustomErrorsSection과 같지 않기 때문에 작동하지 않습니다. IIS7 어셈블리에 의존하지 않으려면 (이럴 필요는 없습니다) ConfigurationSection 개체를 사용하여 자식 요소를 통해 열거하고 원하는 결과를 얻을 수 있습니다. 또는 직접 구성 파일을 선택하여 XML로 처리하고 필요한 값을 읽을 수 있습니다.

+0

항상 반사를 사용할 수 있습니다 .-) – Steven

+0

그래, 나는 "XML로 읽음"접근법을 피하는 다른 옵션으로 언급하는 것을 잊어 버렸습니다. :) 나는 그것을 ConfigurationSection으로로드하려했지만 errorMode 속성을 얻는 방법을 알 수 없었다. 어떤 아이디어? –

관련 문제