2008-11-05 4 views
0

테마를 사용하는 웹 사이트가 있습니다. URL (A.something.com 또는 B.something.com 인 경우 A와 B가 클라이언트를 나타내는 경우)에 따라 다른 테마를로드합니다. 의도는 다른 클라이언트에 대해 하나의 코드베이스를 사용하는 것입니다. app_themes 폴더, 다른 테마의 여러 ​​테마, 각 테마의 CSS 파일 (CSS 파일은 각 테마마다 동일하지만 복제 된 비즈니스상의 이유로)가 있습니다. 그래서 내 코드는 다음과 같습니다테마는 참조되었지만 사용되지 않았습니다. 런타임에는

App_Themes :

로컬 호스트 :

Default.css 문자열

Get 
     Dim myHost As String = Request.Url.Host 
     Return myHost 
    End Get 
    Set(ByVal value As String) 
    End Set 
End Property 







Protected Sub Page_PreInit(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.PreInit 

    If Request.Url.Host.Contains("Savills") Then 
     Page.Theme = "Savills" 
    ElseIf Request.Url.Host.Contains("localhost") Then 
     Page.Theme = "localhost" 
    ElseIf Request.Url.Host.Contains("test.concepglobal.com") Then 
     Page.Theme = "test.concepglobal.com" 
    ElseIf Request.Url.Host.Contains("concepglobal") Then 
     Page.Theme = "concepglobal" 

    End If 



End Sub 

내 app_themes 폴더 구조로

공공 재정의 속성 StyleSheetTheme()

Savills

Savills.css

그러나 사이트를로드 할 때마다 CSS는 선택되지 않습니다. 그래서 CSS로 디자인 한 h1 스타일은 없지만 aspx 페이지에 지정된 그래픽 만 있습니다. 사이트를 실행

내 소스 :

(즉, URL의 사이트를로드).

내가 잘못 뭐하는 거지 :

혼동 같은 CSS에 다른 링크가?

감사합니다.

답변

2

Visual Studio 내에서 코드를 실행할 때만 발생합니까?

ASP.Net Development Server에서 실행중인 경우 App_Themes의 스타일은 인증되지 않은 페이지 (예 : Login.aspx 또는 ForgotPassword.aspx)에 사용되지 않습니다. 사용자가 아직 해당 폴더에 대한 탐색 권한을 가지고 있지 않거나 App_Themes 폴더에 탐색 권한이 없기 때문입니다. 분명히 IIS가이를 처리하지만 Cassini는 그렇지 않습니다.

web.config에 이것을 추가하여 인증 전에 테마 및 스타일이 작동하도록하십시오.

<location path="App_Themes"> 
    <system.web> 
     <authorization> 
     <allow users="?" /> 
     </authorization> 
    </system.web> 
    </location> 

또는 가능하면 컴퓨터의 IIS에서 응용 프로그램을 실행하는 것으로 전환하십시오.

0

대신이 비록 코드를하고, 당신은 당신의 Web.config를 통해 응용 프로그램에서 사용하는 테마 (또는 폴더)를 지정할 수 있습니다

<system.web> 
    <pages theme="concepglobal"></pages> 
</system.web> 

이것은 당신이 각 클라이언트에 대해 서로 다른 Web.config의 파일이 있다고 가정 .

관련 문제