Frage

Ich suchte hoch ein niedrig und kann immer noch keine definitive Antwort finden.

Wie kann ich IIS konfigurieren 7.0 oder eine Web-Anwendung in IIS, so dass ASP.NET Runtime wird behandeln alle Anfragen - darunter auch solche, auf statische Dateien wie *.js, *.gif, etc

Was ich versuche zu tun, wie folgt.

Wir haben eine Art SaaSy Website, die wir können „Marke“ für jeden Kunden. „Branding“ Mittel eine benutzerdefinierte Masterseite zu entwickeln und eine Reihe von *.css und anderen Bildern verwenden.

Ganz natürlich, ich bin mit VirtualPathProvider, die wie folgt funktioniert:

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;
}

Die Grundidee ist folgende: wir einen branding Ordner in unserem Webapp haben, die wiederum enthält Ordner für jede „Marke“, mit „Marke“ gleich Hostnamen. Das heißt, Anfragen an http://foo.example.com/ statische Dateien von branding/foo_example_com verwenden sollten, während http://bar.example.com/ Inhalt von branding/bar_example_com verwenden sollte.

Nun, was ich IIS tun möchte, ist, alle Anfragen zu statischen Dateien zu StaticFileHandler weiterleiten, die dann diese ganze „Infrastruktur“ verwenden würde und richtigen Dateien dienen. Allerdings versuchen, wie ich könnte, ich kann nicht configure IIS, dies zu tun.

War es hilfreich?

Lösung

II7 hat bereits, dass, wenn die Anwendung Becken Managed Pipeline Mode auf Integrated gesetzt ist die Standardeinstellung. Im integrierten Modus, behandelt ASP.NET alle Anforderungen einschließlich der für statische Objekte.

Wenn Sie Ihren Anwendungspool in Classic Mode verlassen, dann müssen Sie die gleichen Techniken verwenden, um Sie in IIS 6 explizit erstellen Handler für die verschiedenen statischen Erweiterungen.

verwenden würden,

Weitere Informationen Basierend auf Kommentare : Ich denke, Ihr fehlendes Stück ein HttpHandler schafft die anderen Erweiterungen (js, css, etc.) zu behandeln. Ohne diese dann wird ASP.NET die Standardeinstellung für diese Art von Dateien Handhabung verwenden. Sie würden einen Verweis auf Sie Handler in Ihrer web.config erstellen. dieser Artikel ist ein Beispiel eines Erstellungshttphandler für statische Dateien.

Andere Tipps

Ein großes Lob an alle, aber das Problem war, in ganz anderen Raum.

VirtualPathProvider kann nicht in einer vorkompilierte Website verwendet werden. Ich bin wütend.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top