【发布时间】:2011-02-05 08:11:01
【问题描述】:
我从高处找了低处,仍然找不到明确的答案。
如何在 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;
}
基本思路如下:我们的 webapp 中有一个branding 文件夹,该文件夹又包含每个“品牌”的文件夹,其中“品牌”等于主机名。也就是说,对http://foo.example.com/ 的请求应该使用来自branding/foo_example_com 的静态文件,而http://bar.example.com/ 应该使用来自branding/bar_example_com 的内容。
现在我想要 IIS 做的是将所有对静态文件的请求转发到 StaticFileHandler,然后它将使用整个“基础设施”并提供正确的文件。但是,尽我所能,我无法配置 IIS 来执行此操作。
【问题讨论】:
-
您是否在问如何强制所有请求由 ASP.NET 请求处理程序处理,而不是 IIS 对这些类型的默认处理程序?或者如果您的 IIS 没有响应对非 ASPNET 文件的请求?你的问题有点不清楚。
-
@rwmnau 谢谢!现在更清楚了吗?
-
确实如此 - 感谢您的编辑。
标签: asp.net iis-7 integrated-pipeline-mode static-files