我搜索了一个较低的值,仍然找不到明确的答案。通过ASP.NET运行时将IIS7配置为服务器静态内容
如何配置IIS 7.0或者IIS中,使ASP.NET运行时将处理所有请求的Web应用程序 - 包括那些静态文件,如*.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;
}
的基本思想是:我们有我们的web应用,又包含文件夹,每个“品牌里面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文件的请求?你的问题有点不清楚。 – SqlRyan 2010-04-07 16:02:25
@rwmnau谢谢!现在更清楚了吗? – 2010-04-07 16:09:32
它的确如此 - 感谢编辑。 – SqlRyan 2010-04-07 16:11:14