我搜索了一个高低,仍然找不到明确的答案。
如何在 IIS 中配置 IIS 7.0 或 Web 应用程序,以便 ASP.NET 运行时处理所有请求 - 包括对静态文件(如*.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
的 webapp 中有一个文件夹,该文件夹又包含每个“品牌”的文件夹,其中“品牌”等于主机名。也就是说,请求http://foo.example.com/
应该使用来自 的静态文件branding/foo_example_com
,而http://bar.example.com/
应该使用来自branding/bar_example_com
.
现在我想要 IIS 做的是将所有对静态文件的请求转发到StaticFileHandler
,然后它将使用整个“基础设施”并提供正确的文件。但是,尽我所能,我无法配置 IIS 来执行此操作。