我已经搜索了很久,但仍然找不到确定的答案。
如何配置IIS 7.0或在IIS中配置Web应用程序,以便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;
}
基本思路如下:我们在 webapp 中有一个 branding 文件夹,其中包含每个“品牌”的文件夹,“品牌”等于主机名。也就是说,对
http://foo.example.com/
的请求应该使用来自 branding/foo_example_com
的静态文件,而 http://bar.example.com/
应该使用来自 branding/bar_example_com
的内容。现在我想让 IIS 将所有静态文件的请求转发到
StaticFileHandler
,然后使用这个整个“基础架构”并提供正确的文件。然而,无论我怎么尝试,我都无法配置 IIS 来实现这一点。