Konfigurieren IIS7 auf Server statische Inhalte durch ASP.NET Runtime
-
25-09-2019 - |
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.
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.
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.