Я искал высокий минимум и все еще не могу найти определенный ответ.
Как настроить IIS 7.0 или веб-приложение в IIS таким образом, чтобы ASP.NET Runtime обрабатывал все запросы, в том числе статические файлы, такие как *.js
, *.gif
и т. Д.?
Я пытаюсь сделать следующее:
У нас есть сайт 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 для этого.