2012-10-25 5 views
1

ASP.NET 4.0, IIS 7.5 사용.프로그래밍 방식으로 프로그래밍 방식으로 웹 사이트 기본 문서를 변경하는 방법

저는 웹 사이트 엔진을 가지고 있습니다. 모바일에로드되고 있는지 여부를 알기 위해이 방법을 구현했으며 Controls\MyControl.ascx로드하는 대신 Mobile\Controls\MyControl.ascx을로드합니다. 이것은 내 컨트롤과 내 MasterPage.Master 파일에도 잘 작동합니다.

그러나 내가 알 수없는 것은 Default.aspx에서 어떻게 동일한 작업을 수행 할 수 있는지입니다. 이것은 모바일 버전인지 점검 할 수 있어야하므로 프로그래밍 방식으로 수행해야합니다. 전 세계에서 사전 초기화 이벤트에서 뭔가를 할 생각 이었지만 그것이 최선의 방법인지는 확실하지 않았습니다.

참고 : Default.aspx에서 인라인 코드를 사용하고 싶지 않고 내 Mobile 플래그에 다른 콘텐츠 기반을 표시하고 싶습니다. 내 시나리오가 고객의 파일을 기반으로 한 걸음 더 나아가서 이것이 하나라는 것을 의미합니다. 관리가 불가능한 모든 고객을위한 거대한 Default.aspx.

답변

1

다른 사람은이 솔루션을 발견했지만 런타임에 web.config 파일을 업데이트하는 아이디어가 마음에 들지 않아 구현할 수 있을지 확신하지 못합니다. Microsoft.Web.Administration 네임 스페이스를 사용하면 프로그래밍 방식으로 server.webServer -> defaultDocument 섹션을 업데이트 할 수 있습니다. 이렇게하면 default.aspx 경로를 변경할 수 있으며 설정 한 변수에 따라로드됩니다. 당신이 %windir%\syswow64\inetsrv (64 비트 버전)에서 추가해야하므로 http://blogs.msdn.com/b/saurabh_singh/archive/2007/11/24/accessing-iis-7-0-features-programmatically-from-configuration-file-s-c.aspx

또한, Microsoft.Web.Administration DLL은 VS에서 직접 사용할 수 없습니다 :

이 링크는 더 많은 정보를 제공해야한다.

3

의미에서 즉시 기본 문서를 변경할 수 없습니다.

기본 페이지의 모바일 버전을로드하기 위해 바로 web.config에 쓰기는 상당히 솔직하게 말하면의 실제 컨텍스트에 대한 대답이 아닙니다. 나는 디폴트 페이지의 모바일 버전을 로딩하는 것에 대한 대답으로 이것을 제안하기 만한다면 개발자로서 무책임하다고 느낄 것이다.

나는 당신이 당신의 문제를 해결하는 것을 도우려고 노력했고, 제목의 기본 질문에 대답하지 않았습니다. 우리 모두 알고 있듯이 web.config를 변경하면 응용 프로그램이 다시 시작되고 실제 솔루션으로 사용할 수 없습니다. 이렇게 할 수없고 모든 종류의 성능을 얻을 수 있습니다.

모바일 브라우저를 다루는 가장 좋은 방법은 다음과 같습니다 (IMHO). http://51degrees.codeplex.com/

HTH!

+0

default.cs에서 PreInit을 눌렀을 때 어느 default.aspx 파일이로드되었는지를 늦추는 것이 내 이해입니다. 이것이 어떻게 도움이되는지 나는 알 수 없다. – webnoob

+0

내가 말할 수있는 것은 51도를 사용하거나 단순히 모바일로 리디렉션하거나 마스터가 원하는 콘텐트 (별도의 파일)로 사용자 정의 콘트롤을 포함 할 수있는 별도의 "모바일"콘텐트 홀더를 선택하도록하는 것입니다. HTH! – Joe

+0

하지만 그 질문에 대답하지 않습니다. 모바일 페이지를 검색하는 방법이 아닌 기본 페이지를 변경하고 내 엔진이 이미 수행 한 것과 다른 데이터를 표시하는 방법을 묻는 질문을 받았습니다. – webnoob

관련 문제