2010-04-07 3 views
4

나는 낮은 것으로 검색했지만 확실한 대답을 찾을 수 없습니다. 등 *.js, *.gif 같은 정적 파일에 포함 해 - 내가 구성하려면 어떻게ASP.NET 런타임을 통해 정적 콘텐츠를 서버에 IIS7을 구성하십시오.

7.0 또는 ASP.NET 런타임이 모든 요청을 처리 할 수 ​​있도록 IIS에서 웹 응용 프로그램을 IIS?

내가하려는 것은 다음과 같습니다.

우리는 SaaSy 사이트를 보유하고 있으며 모든 고객에게 "브랜드"를 제공 할 수 있습니다. "브랜딩"이란 사용자 정의 마스터 페이지를 개발하고 *.css 및 다른 이미지를 사용하는 것을 의미합니다. 아주 자연스럽게

,이처럼 작동하는 VirtualPathProvider을 사용하고 있습니다 :

public override System.Web.Hosting.VirtualFile GetFile(string virtualPath) 
{ 
    if(PhysicalFileExists(virtualPath)) 
    { 
     var virtualFile = base.GetFile(virtualPath); 
     return virtualFile; 
    } 

    if(VirtualFileExists(virtualPath)) 
    { 
     var brandedVirtualPath = GetBrandedVirtualPath(virtualPath); 
     var absolutePath = HttpContext.Current.Server.MapPath(brandedVirtualPath); 

     Trace.WriteLine(string.Format("Serving '{0}' from '{1}'", 
      brandedVirtualPath, absolutePath), "BrandingAwareVirtualPathProvider"); 

     var virtualFile = new VirtualFile(brandedVirtualPath, absolutePath); 
     return virtualFile;  
    } 

    return null; 
} 

다음과 같이 기본적인 아이디어는 우리가 차례로 각 "브랜드의 폴더가 우리의 웹 애플리케이션, 내부 branding 폴더가 ","브랜드 "는 호스트 이름과 같습니다. 즉, http://foo.example.com/에 대한 요청은 branding/foo_example_com의 정적 파일을 사용해야하며 http://bar.example.com/branding/bar_example_com의 내용을 사용해야합니다.

이제 IIS에서 정적 파일에 대한 모든 요청을 StaticFileHandler으로 전달한 다음이 전체 "인프라"를 사용하고 올바른 파일을 제공합니다. 그러나 시도해보십시오. IIS가이 작업을 수행하도록 구성 할 수 없습니다.

+0

모든 요청을 IIS의 기본 처리기 대신 ASP.NET 요청 처리기에서 처리하도록 요청하는 방법이 있습니까? 또는 IIS가 비 ASPNET 파일 요청에 응답하지 않는 경우? 귀하의 질문은 약간 불분명합니다. – SqlRyan

+0

@rwmnau 감사합니다! 이제는 더 명확 해 졌나요? –

+0

- 편집 해 주셔서 감사합니다. – SqlRyan

답변

5

II7 이미있는 경우 응용 프로그램 풀의 Managed Pipeline Mode이 기본값 인 Integrated으로 설정된 경우 통합 모드에서 ASP.NET은 정적 개체에 대한 요청을 포함하여 모든 요청을 처리합니다.

응용 프로그램 풀을 Classic Mode으로 두어야하는 경우 IIS 6에서 사용하는 것과 동일한 기술을 사용하여 다양한 정적 확장에 대한 처리기를 명시 적으로 만들어야합니다.

추가 정보 덧글 기반 : 누락 된 조각이 다른 확장자 (.js, .css 등)를 처리하기 위해 HttpHandler을 생성하고 있다고 생각합니다. 이것이 없으면 ASP.NET은 이러한 유형의 파일에 대한 기본 처리를 사용합니다. web.config에서 핸들러에 대한 참조를 작성합니다. This article은 정적 파일 용 HttpHandler를 만드는 예제입니다.

+0

내 편집보기 이것에 비추어 당신의 대답은 여전히 ​​사실입니까? –

1

모두에게 명성을 전했지만, 문제는 완전히 다른 공간이었습니다.

VirtualPathProvider은 사전 컴파일 된 웹 사이트에서 사용할 수 없습니다. 나는 분노하고있다.